環境要求
安裝 Python 版本 3.9 及以上。
安裝 pip 工具。
安裝 Python SDK
Core SDK 最新版本參考:https://pypi.org/project/cloud-idaas-core/。
通過 pip 工具在 Python 環境中安裝依賴:
pip install cloud-idaas-core
# 或者安裝指定版本,x.x.x 替換為版本號碼
pip install cloud-idaas-core==x.x.x此外,IDaaS SDK 支援 OpenAPI 認證方式,在Function Compute(FC) 等情境下, 可以使用阿里雲的身份憑證(AK/SK、STS)擷取 M2M 用戶端令牌。使用該認證方式,還需要額外安裝阿里雲認證方式擴充外掛程式。
阿里雲認證擴充外掛程式最新版本參考:https://pypi.org/project/cloud-idaas-core-alibabacloud-authentication-plugin/。
pip install cloud-idaas-core-alibabacloud-authentication-plugin
# 或者安裝指定版本,x.x.x 替換為版本號碼
pip install cloud-idaas-core-alibabacloud-authentication-plugin==x.x.x路徑說明
設定檔的預設路徑:~/.cloud_idaas/client-config.json。
也可以通過環境變數或初始化傳參指定設定檔路徑:
環境變數名:CLOUD_IDAAS_CONFIG_PATH
環境變數樣本:
CLOUD_IDAAS_CONFIG_PATH=/.../client-config.json初始化傳參樣本:
IDaaSCredentialProviderFactory.init("/.../client-config.json")設定檔說明
設定檔樣本如下:
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"openApiEndpoint":"eiam.[region_id].aliyuncs.com",
"developerApiEndpoint":"eiam-developerapi.[region_id].aliyuncs.com",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "CLIENT_SECRET_POST",
"clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}參數說明
欄位名 | 備忘 |
idaasInstanceId | 必填,IDaaS EIAM 的執行個體 ID。 |
clientId | 必填,IDaaS 應用的應用 ID,可在對應 IDaaS 應用中查看。 |
issuer | 必填,IDaaS EIAM 執行個體的 Issuer 端點,可在 IDaaS EIAM 執行個體下的任意 M2M 應用中查看。 |
tokenEndpoint | 必填,IDaaS EIAM 執行個體的令牌端點,可在 IDaaS EIAM 執行個體下的任意 M2M 應用中查看。 |
scope | 必填,指定要訪問的 M2M 服務端應用的受眾標識和許可權標識,格式為 在擷取託管到 IDaaS 的 RAM 角色的 STS Token 或憑據的情境下,固定為 |
openApiEndpoint | 可選,IDaaS 的 OpenAPI 地址,使用OpenAPI 認證時使用。 服務地址從雲身份服務 (IDaaS EIAM)-阿里雲OpenAPI開發人員門戶中擷取。 若應用部署在阿里雲 VPC 中,且與 IDaaS 執行個體在同一地區,則可以通過內網 VPC 地址訪問,見阿里雲OpenAPI開發人員門戶中的 VPC 地址。 |
developerApiEndpoint | 可選,IDaaS 的 DeveloperAPI 地址,擷取託管到 IDaaS 的 RAM 角色的 STS Token 或憑據時使用。 服務地址從雲身份服務 (IDaaS EIAM)-阿里雲OpenAPI開發人員門戶中擷取。 若應用部署在阿里雲 VPC 中,且與 IDaaS 執行個體在同一地區,則可以通過內網 VPC 地址訪問,見阿里雲OpenAPI開發人員門戶中的 VPC 地址。 |
authnConfiguration |
|
httpConfiguration | http 協議相關配置,包含 2 個欄位:
|
authnMethod 欄位值 和 authnConfiguration 欄位對應關係
authnMethod | 需要的 authnConfiguration 欄位 | authnConfiguration 欄位說明 |
CLIENT_SECRET_BASIC | clientSecretEnvVarName | 欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Client Secret 。 |
CLIENT_SECRET_POST | ||
CLIENT_SECRET_JWT | ||
PRIVATE_KEY_JWT | privateKeyEnvVarName | 欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Private Key。 |
PKCS7 | applicationFederatedCredentialName | PKCS7 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證。 |
clientDeployEnvironment | 部署環境,目前只支援 | |
OIDC | applicationFederatedCredentialName | OIDC 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證。 |
clientDeployEnvironment | 部署環境,目前只支援 | |
oidcTokenFilePath | 可選,用於指定 Service Account Token 檔案的路徑。若未配置,則嘗試通過 oidcTokenFilePathEnvVarName 指定的環境變數讀取路徑;若兩者均未設定,則預設使用 Kubernetes 標準路徑:/var/run/secrets/kubernetes.io/serviceaccount/token。 | |
oidcTokenFilePathEnvVarName | 可選,未指定 oidcTokenFilePath 時生效,欄位值為環境變數名稱,通過該環境變數讀取 Service Account Token 的檔案路徑。 | |
PCA | applicationFederatedCredentialName | PCA 的聯邦憑證名稱。需提前建立聯邦信任源,相關配置可參考:建立聯邦憑證。 |
clientX509Certificate | 終端認證,格式為: -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- | |
x509CertChains | 中間認證列表,多張認證使用換行拼接,格式: -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- | |
privateKeyEnvVarName | 欄位值為環境變數名稱,通過該環境變數讀取 M2M 用戶端應用的 Private Key。 | |
PLUGIN | pluginName | pluginName 為擴充外掛程式名,目前只支援
|
配置參數樣本
不同認證方式下的具體的配置樣本。
Client Secret 憑證配置樣本
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "CLIENT_SECRET_BASIC" 或 "CLIENT_SECRET_POST" 或 "CLIENT_SECRET_JWT",
"clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}公私密金鑰憑證配置樣本
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PRIVATE_KEY_JWT",
"privateKeyEnvVarName": "ENV_PRIVATE_KEY"
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}PKCS7 聯邦憑證配置樣本
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PKCS7",
"applicationFederatedCredentialName": "your_pkcs7_federated_credential_name",
"clientDeployEnvironment": "ALIBABA_CLOUD_ECS"
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}OIDC 聯邦憑證配置樣本
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "OIDC",
"applicationFederatedCredentialName": "your_oidc_federated_credential_name",
"clientDeployEnvironment": "KUBERNETES",
"oidcTokenFilePath": "/var/run/secrets/.../token"(可選),
"oidcTokenFilePathEnvVarName": "ENV_OIDC_TOKEN_FILE_PATH"(可選)
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}PCA 聯邦憑證配置樣本
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PCA",
"applicationFederatedCredentialName": "your_pca_federated_credential_name",
"clientX509Certificate":
"-----BEGIN CERTIFICATE-----
xxxxxx
-----END CERTIFICATE-----",
"x509CertChains":
"-----BEGIN CERTIFICATE-----
xxxxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
xxxxxx
-----END CERTIFICATE-----",
"privateKeyEnvVarName": "ENV_PRIVATE_KEY"
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}OpenAPI 認證配置參考
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"openApiEndpoint":"eiam.[region_id].aliyuncs.com",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PLUGIN",
"pluginName": "alibabacloudPluginCredentialProvider"
}
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}