将 Azure 密钥保险库配置为密码存储
使用 OpenShift 上 Automation Suite 中的服务主体身份验证将 Azure 密钥保险库配置为密码存储。
您可以使用服务主体身份验证方法将 Azure 密钥保险库配置为密码存储。
默认情况下,所有敏感数据都在input.json中定义。您可以将此数据分为两部分:
input.json- 仅包含配置数据。- Azure 密钥保险库 - 安全存储凭据。
无法将证书路径或与证书相关的凭据作为密码存储区的一部分存储。
在配置密码存储之前, input.json中引用的所有凭据必须作为密码存在于 Azure 密钥保管库中。如果 Azure 密钥保险库中缺少任何引用的凭据,安装将失败。
使用服务主体身份验证
要使用服务主体身份验证将 Azure 密钥保险库配置为密码存储库,请执行以下步骤:
-
为了使
uipathctl能够识别凭据存储在 Azure 密钥保管库中,您必须将密码存储部分添加到input.json,如以下示例所示:"secret_store": { "enabled": true, "provider_configs": [ { "type": "azure", "credentials_secret_name": "azure-service-principal-secret", "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" } } ] }"secret_store": { "enabled": true, "provider_configs": [ { "type": "azure", "credentials_secret_name": "azure-service-principal-secret", "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" } } ] } -
创建一个用于存储 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> -
使用以下命令在
uipath命名空间中部署密码:kubectl apply -f azure-service-principal-secret -n uipathkubectl apply -f azure-service-principal-secret -n uipath -
使用以下格式更新
input.json中的凭据值,以引用存储在 Azure 密钥保管库中的密码:vault/<vault-name>/<key-stored-in-the-vault>vault/<vault-name>/<key-stored-in-the-vault>其中:
vault- 静态关键字。vault-name-secret_store.provider_configs[i].name的值(例如azure-secret-store)。key-stored-in-the-vault- Azure 密钥保险库中存储的密码的名称。更改之前,您的凭据可能如下所示:
"admin_username": "admin", "admin_password": "password","admin_username": "admin", "admin_password": "password",将它们更新为引用 Azure 密钥保险库后,这些值应如下所示:
"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 中的密码。
以下示例显示了input.json配置,其凭据存储在 Azure 密钥保险库(只读)中。
{
"action_center": {
"enabled": true
},
"admin_password": "vault/azure-secret-store/admin-password-1234",
"admin_username": "vault/azure-secret-store/admin-username-1234",
"aicenter": {
"enabled": true
},
"apps": {
"enabled": true
},
"argocd": {
"application_namespace": "uipath",
"project": "uipath"
},
"automation_hub": {
"enabled": true
},
"automation_ops": {
"enabled": true
},
"dataservice": {
"enabled": true
},
"documentunderstanding": {
"enabled": true
},
"exclude_components": [
"argocd",
"monitoring",
"istio",
"logging",
"gatekeeper",
"network-policies",
"velero",
"alerts",
"cert-manager",
"dapr",
"external-secrets"
],
"external_object_storage": {
"access_key": "vault/azure-secret-store/external-object-storage-access-key-1234",
"enabled": true,
"fqdn": "s3storage.mycompany.com",
"port": 443,
"region": "us-east-2",
"secret_key": "vault/azure-secret-store/external-object-storage-secret-key-1234",
"storage_type": "s3"
},
"fabric": {
"redis": {
"hostname": "redis.mycompany.com",
"password": "vault/azure-secret-store/fabric-redis-password-1234",
"port": 6380,
"tls": true
}
},
"fqdn": "automationsuite.mycompany.com",
"ingress": {
"gateway_selector": {
"istio": "ingressgateway"
},
"ingress_gateway_secret": "istio-ingressgateway-certs",
"namespace": "\u003cistio-system\u003e"
},
"insights": {
"enabled": true
},
"istioMinProtocolVersion": "TLSV1_3",
"kubernetes_distribution": "openshift",
"namespace": "uipath",
"orchestrator": {
"enabled": true
},
"platform": {
"enabled": true
},
"postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
"processmining": {
"enabled": true
},
"profile": "default",
"registries": {
"docker": {
"password": "",
"pull_secret_name": "registry-credentials",
"pull_secret_value": "",
"url": "registry.mycompany.com",
"username": ""
},
"helm": {
"password": "",
"url": "registry.mycompany.com",
"username": ""
}
},
"secret_store": {
"enabled": true,
"secret_name": "",
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"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"
}
}
]
},
"sql": {
"create_db": true,
"password": "vault/azure-secret-store/sql-password-1234",
"port": "1433",
"server_url": "sql.mycompany.com",
"username": "vault/azure-secret-store/sql-username-1234"
},
"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": "managed-premium",
"telemetry_optout": true,
"test_manager": {
"enabled": true
}
}
{
"action_center": {
"enabled": true
},
"admin_password": "vault/azure-secret-store/admin-password-1234",
"admin_username": "vault/azure-secret-store/admin-username-1234",
"aicenter": {
"enabled": true
},
"apps": {
"enabled": true
},
"argocd": {
"application_namespace": "uipath",
"project": "uipath"
},
"automation_hub": {
"enabled": true
},
"automation_ops": {
"enabled": true
},
"dataservice": {
"enabled": true
},
"documentunderstanding": {
"enabled": true
},
"exclude_components": [
"argocd",
"monitoring",
"istio",
"logging",
"gatekeeper",
"network-policies",
"velero",
"alerts",
"cert-manager",
"dapr",
"external-secrets"
],
"external_object_storage": {
"access_key": "vault/azure-secret-store/external-object-storage-access-key-1234",
"enabled": true,
"fqdn": "s3storage.mycompany.com",
"port": 443,
"region": "us-east-2",
"secret_key": "vault/azure-secret-store/external-object-storage-secret-key-1234",
"storage_type": "s3"
},
"fabric": {
"redis": {
"hostname": "redis.mycompany.com",
"password": "vault/azure-secret-store/fabric-redis-password-1234",
"port": 6380,
"tls": true
}
},
"fqdn": "automationsuite.mycompany.com",
"ingress": {
"gateway_selector": {
"istio": "ingressgateway"
},
"ingress_gateway_secret": "istio-ingressgateway-certs",
"namespace": "\u003cistio-system\u003e"
},
"insights": {
"enabled": true
},
"istioMinProtocolVersion": "TLSV1_3",
"kubernetes_distribution": "openshift",
"namespace": "uipath",
"orchestrator": {
"enabled": true
},
"platform": {
"enabled": true
},
"postgresql_connection_string_template_sqlalchemy_pyodbc": "vault/azure-secret-store/postgresql-connection-string-template-sqlalchemy-pyodbc-1234",
"processmining": {
"enabled": true
},
"profile": "default",
"registries": {
"docker": {
"password": "",
"pull_secret_name": "registry-credentials",
"pull_secret_value": "",
"url": "registry.mycompany.com",
"username": ""
},
"helm": {
"password": "",
"url": "registry.mycompany.com",
"username": ""
}
},
"secret_store": {
"enabled": true,
"secret_name": "",
"provider_configs": [
{
"type": "azure",
"credentials_secret_name": "azure-service-principal-secret",
"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"
}
}
]
},
"sql": {
"create_db": true,
"password": "vault/azure-secret-store/sql-password-1234",
"port": "1433",
"server_url": "sql.mycompany.com",
"username": "vault/azure-secret-store/sql-username-1234"
},
"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": "managed-premium",
"telemetry_optout": true,
"test_manager": {
"enabled": true
}
}
配置 Azure 云环境
environment_type字段指定要用于访问密钥保管库的 Azure 云环境。此字段为可选字段,默认为PublicCloud 。
支持以下值:
| 值 | 描述 |
|---|---|
PublicCloud | Azure 公共云(默认) |
USGovernmentCloud | Azure 美国政府云 |
ChinaCloud | Azure(中国)云 |
GermanCloud | Azure(德国)云 |
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"
}
}
]
}
配置符合 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