UiPath Documentation
automation-suite
2.2510
true
EKS/AKS の Automation Suite のインストール ガイド
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。

Azure Key Vault をシークレットストアとして設定する

EKS/AKS でサービス プリンシパルまたはワークロード ID の認証を使用して、Azure Key Vault をシークレットストアとして設定します。

Azure Key Vault をシークレットストアとして設定するには、以下のいずれかの方法を使用します。

  • サービス プリンシパル認証
  • Workload Identity の認証

デフォルトでは、すべての機密データは input.jsonで定義されます。このデータは、次の 2 つの部分に分けることができます。

  • input.json - 構成データのみが含まれます。
  • Azure Key Vault - 資格情報を安全に保存します。
注:

証明書のパスや証明書関連の資格情報を secretstore の一部として保存することはできません。

重要:

シークレット ストアを設定する前に、 input.json で参照されるすべての資格情報が Azure Key Vault にシークレットとして存在している必要があります。参照されている資格情報が Azure Key Vault に存在しない場合、インストールは失敗します。

サービス プリンシパル認証を使用する​

サービス プリンシパル認証を使用して Azure Key Vault を SecretStore として設定するには、以下の手順を実行します。

  1. 資格情報が Azure Key Vault に格納されていること uipathctl 識別するには、次の例に示すように、secretstore セクションを input.json に追加する必要があります。

    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "credentials_secret_name": "azure-service-principal-secret",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "environment_type": "PublicCloud",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/",
            "tenant_id": "00000000-0000-0000-0000-000000000000"
          }
        }
      ]
    }
    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "credentials_secret_name": "azure-service-principal-secret",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "environment_type": "PublicCloud",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/",
            "tenant_id": "00000000-0000-0000-0000-000000000000"
          }
        }
      ]
    }
    
  2. 次の例に示すように、Azure サービス プリンシパルの資格情報を格納する Kubernetes シークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-service-principal-secret
    type: Opaque
    stringData:
      clientId: <client-id>
      clientSecret: <client-secret>
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-service-principal-secret
    type: Opaque
    stringData:
      clientId: <client-id>
      clientSecret: <client-secret>
    
  3. 次のコマンドを使用して、 uipath 名前空間にシークレットをデプロイします。

    kubectl apply -f azure-service-principal-secret -n uipath
    kubectl apply -f azure-service-principal-secret -n uipath
    
  4. 次の形式を使用して、 input.json の資格情報の値を更新し、Azure Key Vault に格納されているシークレットを参照します。

    vault/<vault-name>/<key-stored-in-the-vault>
    vault/<vault-name>/<key-stored-in-the-vault>
    

    場所:

    • vault - static キーワードです。
    • vault-name - secret_store.provider_configs[i].name の値です (例: azure-secret-store)。
    • key-stored-in-the-vault - Azure Key Vault に格納されているシークレットの名前です。変更前の資格情報は次のようになります。
    "admin_username": "admin",
    "admin_password": "password",
    "admin_username": "admin",
    "admin_password": "password",
    

    Azure Key Vault を参照するように更新すると、次のようになります。

    "admin_username": "vault/azure-secret-store/admin-username-1234",
    "admin_password": "vault/azure-secret-store/admin-password-1234",
    "admin_username": "vault/azure-secret-store/admin-username-1234",
    "admin_password": "vault/azure-secret-store/admin-password-1234",
    

    次の図は、Azure Key Vault に格納されているシークレットを示しています。

次の例は、Azure Key Vault に格納されている資格情報を使用した input.json 構成を示しています。

{
  "admin_password": "vault/azure-secret-store/admin-password-1234",
  "admin_username": "vault/azure-secret-store/admin-username-1234",
  "apps": {
    "enabled": true,
    "external_object_storage": {
      "account_key": "vault/azure-secret-store/apps-external-object-storage-account-key-1234",
      "account_name": "as-storage-account",
      "azure_fqdn_suffix": "core.windows.net",
      "bucket_name": "uipath-as-platform",
      "create_bucket": true,
      "enabled": true,
      "region": "us-east-1",
      "storage_type": "azure",
      "use_instance_profile": true
    }
  },
  "exclude_components": [],
  "external_object_storage": {
    "account_key": "vault/azure-secret-store/external-object-storage-account-key-1234",
    "account_name": "as-storage-account",
    "azure_fqdn_suffix": "core.windows.net",
    "create_bucket": true,
    "enabled": true,
    "region": "us-east-1",
    "storage_type": "azure",
    "use_instance_profile": true
  },
  "fabric": {
    "redis": {
      "hostname": "redis-cache.mycompany.com",
      "password": "vault/azure-secret-store/fabric-redis-password-1234",
      "port": 6380,
      "tls": true
    }
  },
  "fqdn": "automationsuite.mycompany.com",
  "infra": {
    "docker_registry": {}
  },
  "ingress": {
    "gateway_selector": {
      "istio": "ingressgateway"
    },
    "service_annotations": {
      "service.beta.kubernetes.io/azure-load-balancer-internal": "false",
      "service.beta.kubernetes.io/azure-load-balancer-ipv4": "ip-address"
    }
  },
  "install_type": "online",
  "integrationservices": {
    "enabled": true,
    "external_object_storage": {
      "bucket_name": "uipath-as-platform"
    }
  },
  "istioMinProtocolVersion": "TLSV1_3",
  "kubernetes_distribution": "aks",
  "orchestrator": {
    "enabled": true,
    "external_object_storage": {
      "account_key": "vault/azure-secret-store/orchestrator-external-object-storage-account-key-1234",
      "account_name": "os-storage-account",
      "azure_fqdn_suffix": "core.windows.net",
      "bucket_name": "uipath-as-orchestrator",
      "create_bucket": true,
      "enabled": true,
      "region": "us-east-1",
      "storage_type": "azure",
      "use_instance_profile": true
    },
    "sql_connection_str": "vault/azure-secret-store/orchestrator-sql-connection-str-1234",
    "testautomation": {
      "enabled": true
    },
    "updateserver": {
      "enabled": true
    }
  },
  "platform": {
    "enabled": true
  },
  "pod_identity": {
    "aks_managed_identity_client_id": "client-id",
    "enabled": true
  },
  "postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
  "profile": "ha",
  "proxy": {
    "enabled": true,
    "http_proxy": "\u003c\u003chttp://\u003cPROXY-SERVER-IP\u003e\u003e:\u003cPROXY-PORT\u003e",
    "https_proxy": "\u003c\u003chttp://\u003cPROXY-SERVER-IP\u003e\u003e:\u003cPROXY-PORT\u003e",
    "no_proxy": "paste list from Configuring the cluster section"
  },
  "registries": {
    "docker": {
      "password": "",
      "pull_secret_name": "registry-credentials",
      "url": "registry.uipath.com",
      "username": ""
    },
    "helm": {
      "password": "",
      "url": "registry.uipath.com",
      "username": ""
    }
  },
  "secret_store": {
    "enabled": true,
    "secret_name": "",
    "provider_configs": [
      {
        "type": "azure",
        "credentials_secret_name": "azure-service-principal-secret",
        "is_default": true,
        "refresh_interval": "5m",
        "name": "azure-secret-store",
        "azure_kv": {
          "vault_url": "https://eso-azure-kv.vault.azure.net/",
          "tenant_id": "00000000-0000-0000-0000-000000000000",
          "managed_identity_id": null
        },
        "aws_kv": {
          "role_arn": null
        },
        "hashicorp_kv": {}
      }
    ]
  },
  "snapshot": {
    "aks_infra_resource_group": "MC_ci-asaks4002399_ci-asaks4002399_eastus",
    "enabled": true,
    "external_object_storage": {
      "account_name": "storaccid2547865",
      "auth_mode": "ServicePrincipal",
      "bucket_name": "uipath-backup",
      "client_id": "1fbd7d95-5f8c-4f70-90a6-fdf20310d10e",
      "client_secret": "vault/azure-secret-store/snapshot-external-object-storage-client-secret-1234",
      "cloud_name": "AzurePublicCloud",
      "resource_group": "ci-asaks4002399",
      "storage_type": "azure",
      "subscription_id": "b65b0225-ce9b-4a79-9dd9-c00071d40d64",
      "tenant_id": "00000000-0000-0000-0000-000000000000"
    }
  },
  "sql_connection_string_template": "vault/azure-secret-store/sql-connection-string-template-1234",
  "sql_connection_string_template_jdbc": "vault/azure-secret-store/sql-connection-string-template-jdbc-1234",
  "sql_connection_string_template_odbc": "vault/azure-secret-store/sql-connection-string-template-odbc-1234",
  "sql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/sql-connection-string-template-sqlalchemy-pyodbc-1234",
  "storage_class": "managed-premium",
  "storage_class_single_replica": "azurefile-csi",
  "test_manager": {
    "enabled": true,
    "external_object_storage": {
      "bucket_name": "uipath-as-platform"
    }
  },
  "tolerations": []
}
{
  "admin_password": "vault/azure-secret-store/admin-password-1234",
  "admin_username": "vault/azure-secret-store/admin-username-1234",
  "apps": {
    "enabled": true,
    "external_object_storage": {
      "account_key": "vault/azure-secret-store/apps-external-object-storage-account-key-1234",
      "account_name": "as-storage-account",
      "azure_fqdn_suffix": "core.windows.net",
      "bucket_name": "uipath-as-platform",
      "create_bucket": true,
      "enabled": true,
      "region": "us-east-1",
      "storage_type": "azure",
      "use_instance_profile": true
    }
  },
  "exclude_components": [],
  "external_object_storage": {
    "account_key": "vault/azure-secret-store/external-object-storage-account-key-1234",
    "account_name": "as-storage-account",
    "azure_fqdn_suffix": "core.windows.net",
    "create_bucket": true,
    "enabled": true,
    "region": "us-east-1",
    "storage_type": "azure",
    "use_instance_profile": true
  },
  "fabric": {
    "redis": {
      "hostname": "redis-cache.mycompany.com",
      "password": "vault/azure-secret-store/fabric-redis-password-1234",
      "port": 6380,
      "tls": true
    }
  },
  "fqdn": "automationsuite.mycompany.com",
  "infra": {
    "docker_registry": {}
  },
  "ingress": {
    "gateway_selector": {
      "istio": "ingressgateway"
    },
    "service_annotations": {
      "service.beta.kubernetes.io/azure-load-balancer-internal": "false",
      "service.beta.kubernetes.io/azure-load-balancer-ipv4": "ip-address"
    }
  },
  "install_type": "online",
  "integrationservices": {
    "enabled": true,
    "external_object_storage": {
      "bucket_name": "uipath-as-platform"
    }
  },
  "istioMinProtocolVersion": "TLSV1_3",
  "kubernetes_distribution": "aks",
  "orchestrator": {
    "enabled": true,
    "external_object_storage": {
      "account_key": "vault/azure-secret-store/orchestrator-external-object-storage-account-key-1234",
      "account_name": "os-storage-account",
      "azure_fqdn_suffix": "core.windows.net",
      "bucket_name": "uipath-as-orchestrator",
      "create_bucket": true,
      "enabled": true,
      "region": "us-east-1",
      "storage_type": "azure",
      "use_instance_profile": true
    },
    "sql_connection_str": "vault/azure-secret-store/orchestrator-sql-connection-str-1234",
    "testautomation": {
      "enabled": true
    },
    "updateserver": {
      "enabled": true
    }
  },
  "platform": {
    "enabled": true
  },
  "pod_identity": {
    "aks_managed_identity_client_id": "client-id",
    "enabled": true
  },
  "postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
  "profile": "ha",
  "proxy": {
    "enabled": true,
    "http_proxy": "\u003c\u003chttp://\u003cPROXY-SERVER-IP\u003e\u003e:\u003cPROXY-PORT\u003e",
    "https_proxy": "\u003c\u003chttp://\u003cPROXY-SERVER-IP\u003e\u003e:\u003cPROXY-PORT\u003e",
    "no_proxy": "paste list from Configuring the cluster section"
  },
  "registries": {
    "docker": {
      "password": "",
      "pull_secret_name": "registry-credentials",
      "url": "registry.uipath.com",
      "username": ""
    },
    "helm": {
      "password": "",
      "url": "registry.uipath.com",
      "username": ""
    }
  },
  "secret_store": {
    "enabled": true,
    "secret_name": "",
    "provider_configs": [
      {
        "type": "azure",
        "credentials_secret_name": "azure-service-principal-secret",
        "is_default": true,
        "refresh_interval": "5m",
        "name": "azure-secret-store",
        "azure_kv": {
          "vault_url": "https://eso-azure-kv.vault.azure.net/",
          "tenant_id": "00000000-0000-0000-0000-000000000000",
          "managed_identity_id": null
        },
        "aws_kv": {
          "role_arn": null
        },
        "hashicorp_kv": {}
      }
    ]
  },
  "snapshot": {
    "aks_infra_resource_group": "MC_ci-asaks4002399_ci-asaks4002399_eastus",
    "enabled": true,
    "external_object_storage": {
      "account_name": "storaccid2547865",
      "auth_mode": "ServicePrincipal",
      "bucket_name": "uipath-backup",
      "client_id": "1fbd7d95-5f8c-4f70-90a6-fdf20310d10e",
      "client_secret": "vault/azure-secret-store/snapshot-external-object-storage-client-secret-1234",
      "cloud_name": "AzurePublicCloud",
      "resource_group": "ci-asaks4002399",
      "storage_type": "azure",
      "subscription_id": "b65b0225-ce9b-4a79-9dd9-c00071d40d64",
      "tenant_id": "00000000-0000-0000-0000-000000000000"
    }
  },
  "sql_connection_string_template": "vault/azure-secret-store/sql-connection-string-template-1234",
  "sql_connection_string_template_jdbc": "vault/azure-secret-store/sql-connection-string-template-jdbc-1234",
  "sql_connection_string_template_odbc": "vault/azure-secret-store/sql-connection-string-template-odbc-1234",
  "sql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/sql-connection-string-template-sqlalchemy-pyodbc-1234",
  "storage_class": "managed-premium",
  "storage_class_single_replica": "azurefile-csi",
  "test_manager": {
    "enabled": true,
    "external_object_storage": {
      "bucket_name": "uipath-as-platform"
    }
  },
  "tolerations": []
}

Azure クラウド環境を設定する​

environment_type フィールドには、Key Vault へのアクセスに使用する Azure クラウド環境を指定します。このフィールドは任意で、既定値は PublicCloudです。

次の値がサポートされています。

値 (Value)説明
PublicCloudAzure パブリック クラウド (既定)
USGovernmentCloudAzure US Government クラウド
ChinaCloudAzure China クラウド
GermanCloudAzure Germany クラウド
注:

vault_urlは Azure クラウド環境と一致する必要があります。例えば:

  • パブリック クラウド: https://<vault-name>.vault.azure.net/
  • 米国政府: https://<vault-name>.vault.usgovcloudapi.net/
  • 中国: https://<vault-name>.vault.azure.cn/
  • ドイツ: https://<vault-name>.vault.microsoftazure.de/

次の例は、input.jsonの [environment_type] フィールドを設定する方法を示しています。

"secret_store": {
  "enabled": true,
  "provider_configs": [
    {
      "type": "azure",
      "credentials_secret_name": "azure-service-principal-secret",
      "refresh_interval": "5m",
      "name": "azure-secret-store",
      "environment_type": "USGovernmentCloud",
      "azure_kv": {
        "vault_url": "https://eso-azure-kv.vault.azure.net/",
        "tenant_id": "00000000-0000-0000-0000-000000000000"
      }
    }
  ]
}
"secret_store": {
  "enabled": true,
  "provider_configs": [
    {
      "type": "azure",
      "credentials_secret_name": "azure-service-principal-secret",
      "refresh_interval": "5m",
      "name": "azure-secret-store",
      "environment_type": "USGovernmentCloud",
      "azure_kv": {
        "vault_url": "https://eso-azure-kv.vault.azure.net/",
        "tenant_id": "00000000-0000-0000-0000-000000000000"
      }
    }
  ]
}

Workload Identity 認証を使用する​

Azure Key Vault は、サービス プリンシパルの代わりに Workload Identity 認証を使用してシークレットストアとして設定できます。

ワークロード ID を使用すると、Kubernetes ポッドは Kubernetes シークレットに資格情報を格納せずに Azure リソースにアクセスできます。

設定に応じて、すべてのコンポーネントに適用されるグローバル ワークロード ID を使用するか、次のように Azure Key Vault 専用の別のワークロード ID を設定できます。

  • グローバル ワークロード ID を使用する
    "pod_identity": {
      "aks_managed_identity_client_id": "managed-identity-id",
      "enabled": true
    },
    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/"
          }
        }
      ]
    }
    "pod_identity": {
      "aks_managed_identity_client_id": "managed-identity-id",
      "enabled": true
    },
    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/"
          }
        }
      ]
    }
    
  • Azure Key Vault に個別のワークロード ID を使用する
    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/",
            "managed_identity_id": "managed-identity-id"
          }
        }
      ]
    }
    "secret_store": {
      "enabled": true,
      "provider_configs": [
        {
          "type": "azure",
          "refresh_interval": "5m",
          "name": "azure-secret-store",
          "azure_kv": {
            "vault_url": "https://eso-azure-kv.vault.azure.net/",
            "managed_identity_id": "managed-identity-id"
          }
        }
      ]
    }
    

外部シークレットのマネージド ID を設定する オペレーター​

外部 Secrets Operator がワークロード ID を使用して Azure Key Vault にアクセスできるようにするには、以下の手順を実行します。

  1. 「ワークロード ID の構成」で説明されている手順を実行して、必要なサービス アカウントにフェデレーション資格情報を提供します。

  2. Workload Identity 設定のステップ 3 に加えて、以下のコマンドを実行して、External Secrets Operator のフェデレーション認証情報を作成します。

    create_federated_credentials "uipath" "external-secrets"
    create_federated_credentials "uipath" "external-secrets"
    
  3. 必要なロールをマネージド ID に割り当てて、Azure Key Vault 内のシークレットにアクセスできるようにします。

    # Export the following variables with your correct values
    export SUBSCRIPTION_ID="<your-subscription-id>"
    export TARGET_RG="<your-resource-group-name>"
    export VAULT_NAME="<your-key-vault-name>"
    export USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID="<your-managed-identity-object-id>"
    
    # Assign Key Vault roles to the managed identity
    az role assignment create --assignee $USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID --role "Key Vault Secrets User" --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$TARGET_RG/providers/Microsoft.KeyVault/vaults/$VAULT_NAME"
    az role assignment create --assignee $USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID --role "Key Vault Reader" --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$TARGET_RG/providers/Microsoft.KeyVault/vaults/$VAULT_NAME"
    # Export the following variables with your correct values
    export SUBSCRIPTION_ID="<your-subscription-id>"
    export TARGET_RG="<your-resource-group-name>"
    export VAULT_NAME="<your-key-vault-name>"
    export USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID="<your-managed-identity-object-id>"
    
    # Assign Key Vault roles to the managed identity
    az role assignment create --assignee $USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID --role "Key Vault Secrets User" --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$TARGET_RG/providers/Microsoft.KeyVault/vaults/$VAULT_NAME"
    az role assignment create --assignee $USER_ASSIGNED_MANAGED_IDENTITY_OBJECT_ID --role "Key Vault Reader" --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$TARGET_RG/providers/Microsoft.KeyVault/vaults/$VAULT_NAME"
    

外部 OCI 準拠プライベート レジストリ​を設定する

プライベート レジストリを使用する際に、レジストリの資格情報を input.jsonで設定しない場合は、次の例に示すように、代わりに Kubernetes シークレットとして指定できます。

"registries": {
  "docker": {
    "pull_secret_name": "registry-credentials",
    "url": "sfbrdevhelmweacr.azurecr.io"
  }
}
"registries": {
  "docker": {
    "pull_secret_name": "registry-credentials",
    "url": "sfbrdevhelmweacr.azurecr.io"
  }
}

次の例に示すように、レジストリの資格情報を格納する Kubernetes シークレットを作成します。

apiVersion: v1
kind: Secret
metadata:
  name: registry-credentials
type: Opaque
data:
  url: base64Encode(sfbrdevhelmweacr.azurecr.io)
  username: base64Encode(<registry-username>)
  password: base64Encode(<registry-password>)
apiVersion: v1
kind: Secret
metadata:
  name: registry-credentials
type: Opaque
data:
  url: base64Encode(sfbrdevhelmweacr.azurecr.io)
  username: base64Encode(<registry-username>)
  password: base64Encode(<registry-password>)

次のコマンドを使用して、 uipath 名前空間にシークレットを適用します。

kubectl apply -f registry-credentials.yaml -n uipath
kubectl apply -f registry-credentials.yaml -n uipath

このページは役に立ちましたか?

接続

ヘルプ リソース サポート

学習する UiPath アカデミー

質問する UiPath フォーラム

最新情報を取得