环境准备

更新时间:
复制为 MD 格式

环境要求

  • 安装 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 或凭据的场景下,固定为 urn:cloud:idaas:pam|.all,表示 IDaaS 内置的 scope。

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

  • identityType:可选,默认值为CLIENT,目前只支持CLIENT,表示 M2M 客户端应用以机器身份进行认证。

  • authnMethod:必填,认证方式。不同认证方式所需的 authnConfiguration 字段不同,详细对应关系参见authnMethod 字段值 和 authnConfiguration 字段对应关系

httpConfiguration

http 协议相关配置,包含 2 个字段:

  • connectTimeout:可选,客户端与服务端建立连接的最大等待时间(毫秒),默认为 5000。

  • readTimeout:可选,连接建立后,客户端等待服务端返回数据的最大等待时间(毫秒),默认为 10000。

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

部署环境,目前只支持 ALIBABA_CLOUD_ECS

OIDC

applicationFederatedCredentialName

OIDC 的联邦凭证名称。需提前创建联邦信任源,相关配置可参考:创建联邦凭证

clientDeployEnvironment

部署环境,目前只支持 KUBERNETES

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 为扩展插件名,目前只支持 alibabacloudPluginCredentialProvider,即阿里云 OpenAPI 认证方式。使用阿里云 OpenAPI 认证时需要完成以下配置:

配置参数示例

不同认证方式下的具体的配置示例。

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
  }
}