Obtenga credenciales temporales (token de STS) para asumir un rol de RAM mediante la llamada a la operación AssumeRole con el STS SDK de Python.
Paso 1: Revisar la documentación de la API
Revise API overview y localice la operación AssumeRole. Tome nota de los parámetros de solicitud y los permisos obligatorios.
Paso 2: Crear un usuario de RAM y otorgar permisos
Identidad
Solo los usuarios de RAM y los roles de RAM pueden invocar esta API. Las cuentas de Alibaba Cloud (cuentas principales) no son compatibles. Para obtener más información, consulte Identities.
Este ejemplo utiliza un usuario de RAM.
Inicie sesión en la consola de RAM y cree un usuario de RAM. Create a RAM user.
Credenciales
Vaya a la página de detalles del usuario de RAM de destino. En la pestaña Authentication, dentro de la sección User AccessKeys, haga clic en Create AccessKey. Create an AccessKey.
El AccessKey secret de un usuario de RAM se muestra únicamente al momento de su creación y no es posible recuperarlo después. Guárdelo de forma segura.
Permisos
En la página Users de la consola de RAM, localice el usuario de RAM de destino y haga clic en Actions dentro de la columna Grant Permissions.
-
En el cuadro de búsqueda, introduzca
stsy seleccione la política de sistema AliyunSTSAssumeRoleAccess.Esta política otorga permiso para invocar la operación AssumeRole de STS.
Haga clic en OK para completar la autorización.
Paso 3: Crear un rol de RAM
Inicie sesión en la consola de RAM y cree un rol de RAM con una cuenta de Alibaba Cloud como entidad de confianza. Seleccione la cuenta actual u otra cuenta:
Current Account: Para permitir que un usuario de RAM de la cuenta actual de Alibaba Cloud asuma este rol, seleccione Current Account.
Other Account: Para permitir que usuarios de RAM de otra cuenta de Alibaba Cloud asuman este rol, seleccione Other Account e introduzca el ID de la otra cuenta. Utilice esta opción para escenarios de acceso entre cuentas.
Dado que el usuario de RAM de Step 2 asumirá este rol, establezca la entidad de confianza en la cuenta de Alibaba Cloud propietaria de dicho usuario. Create a RAM role whose trusted entity is an Alibaba Cloud account.
También puede Modify the trust policy of a RAM role para modificar qué usuarios de RAM pueden asumirlo.
Paso 4: Realizar la llamada a la API
Este ejemplo utiliza el SDK de Python. Para otros lenguajes, consulte STS SDK. También puede utilizar otras Call methods.
Configurar el entorno de Python
Descargue e instale Python 3.
Ejecute python --version para comprobar la instalación.
Configurar variables de entorno
Almacene el par de AccessKey en variables de entorno en lugar de codificarlas directamente en el código fuente. Configure environment variables on Linux, macOS, and Windows.
Instalar dependencias
pip install alibabacloud_credentials
pip install alibabacloud_sts20150401==1.1.3
pip install alibabacloud_tea_console
Descargar código de ejemplo
En OpenAPI Portal, inicie sesión como el usuario de RAM de Step 2 y abra la URL de depuración de AssumeRole.
-
Introduzca los parámetros de solicitud y haga clic en Initiate Call.
Para RoleArn, introduzca el ARN del rol de RAM de Step 3. How do I view the ARN of a RAM role?
En la pestaña SDK Sample, seleccione la pestaña Python y haga clic en Download Project.
Extraiga el paquete y vaya al directorio alibabacloud_sample.
Ejecutar código de ejemplo
Ejecute el siguiente comando:
python sample.py
Salida de ejemplo:
"headers": {
"date": "Thu, 17 Aug 2023 10:17:04 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "846",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "79E360B6-FAC5-5B18-8081-BC0F8E90A238",
"x-acs-trace-id": "b2fb071a47e03e6d6cd507fd05438021",
"etag": "8bZ4pA7U/ulImlQiwhQnxXw6"
},
"statusCode": 200,
"body": {
"AssumedRoleUser": {
"Arn": "acs:ram::151266687691****:role/test-role/test",
"AssumedRoleId": "30081280744271****:test"
},
"Credentials": {
"AccessKeyId": "STS.NTdbdgE5zgL2qcb5pAify****",
"AccessKeySecret": "Fyk6ab1xfCFn88hXFxzV44QnF6cDi9T2PiTJgsqU****",
"Expiration": "2023-08-17T11:17:04Z",
"SecurityToken": "CAIS7AF1q6Ft5B2yfSjIr5fRKd7TqOpb0ISgUnocHLFUE6eDM****"
},
"RequestId": "79E360B6-FAC5-5B18-8081-BC0F8E90A238"
}
}