环境要求
安装 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 认证方式,在函数计算(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
}
}