Obtenha credenciais temporárias (STS Token) para assumir uma função do RAM chamando a operação AssumeRole com o STS Python SDK.
Etapa 1: Revisar a documentação da API
Consulte a API overview e localize a operação AssumeRole. Observe os parâmetros de solicitação e as permissões necessárias.
Etapa 2: Criar um usuário do RAM e conceder permissões
Identidade
Apenas usuários do RAM e funções do RAM podem chamar esta API. Contas Alibaba Cloud (contas primárias) não são suportadas. Para mais informações, consulte Identities.
Este exemplo utiliza um usuário do RAM.
Faça login no RAM console e crie um usuário do RAM. Create a RAM user.
Credenciais
Acesse a página de detalhes do usuário do RAM desejado. Na aba Authentication, na seção User AccessKeys, clique em Create AccessKey. Create an AccessKey.
O AccessKey secret de um usuário do RAM é exibido apenas uma vez no momento da criação e não pode ser recuperado posteriormente. Armazene-o com segurança.
Permissões
Na página Users do RAM console, localize o usuário do RAM desejado e clique em Actions na coluna Grant Permissions.
-
No campo de busca, insira
stse selecione a política de sistema AliyunSTSAssumeRoleAccess.Essa política concede permissão para chamar a operação AssumeRole do STS.
Clique em OK para concluir a autorização.
Etapa 3: Criar uma função do RAM
Faça login no RAM console e crie uma função do RAM com uma conta Alibaba Cloud como entidade confiável. Selecione a conta atual ou outra conta:
Current Account: Para permitir que um usuário do RAM na conta Alibaba Cloud atual assuma essa função, selecione Current Account.
Other Account: Para permitir que usuários do RAM de outra conta Alibaba Cloud assumam essa função, selecione Other Account e insira o ID da outra conta. Utilize esta opção para cenários de acesso entre contas.
Como o usuário do RAM da Step 2 assumirá essa função, defina a entidade confiável como a conta Alibaba Cloud proprietária desse usuário do RAM. Create a RAM role whose trusted entity is an Alibaba Cloud account.
Também é possível Modify the trust policy of a RAM role para alterar quais usuários do RAM podem assumi-la.
Etapa 4: Fazer a chamada de API
Este exemplo utiliza o Python SDK. Para outras linguagens, consulte o STS SDK. Você também pode usar outros Call methods.
Configurar o ambiente Python
Baixe e instale o Python 3.
Execute python --version para verificar a instalação.
Configurar variáveis de ambiente
Armazene o par de AccessKey em variáveis de ambiente em vez de codificá-las diretamente no source code. Configure environment variables on Linux, macOS, and Windows.
Instalar dependências
pip install alibabacloud_credentials
pip install alibabacloud_sts20150401==1.1.3
pip install alibabacloud_tea_console
Baixar código de exemplo
No OpenAPI Portal, faça login como o usuário do RAM da Step 2 e abra a URL de depuração do AssumeRole.
-
Insira os parâmetros de solicitação e clique em Initiate Call.
Para RoleArn, insira o ARN da função do RAM da Step 3. How do I view the ARN of a RAM role?
Na aba SDK Sample, selecione a aba Python e clique em Download Project.
Extraia o pacote e acesse o diretório alibabacloud_sample.
Executar código de exemplo
Execute o seguinte comando:
python sample.py
Saída de exemplo:
"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"
}
}