Chame a operação AssumeRole do STS com o SDK for Python para obter credenciais temporárias e assumir uma função do RAM.
Etapa 1: Revisar a documentação da API
Consulte a Visão geral da API e localize a operação AssumeRole. Analise os parâmetros de solicitação e as permissões necessárias.
Etapa 2: Crie um usuário do RAM e conceder permissões
Identidade
Chame esta API como um usuário do RAM ou uma função do RAM. Não há suporte para contas da Alibaba Cloud (contas primárias). Consulte Identidades.
Este exemplo utiliza um usuário do RAM.
Acesse o RAM console e crie um usuário do RAM. Consulte Criar um usuário do RAM.
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. Consulte Criar um 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: Crie uma função do RAM
Acesse o RAM console e crie uma função do RAM com uma conta da Alibaba Cloud como entidade confiável. Selecione a conta atual ou outra conta:
Current Account: Para permitir que um usuário do RAM da conta atual da Alibaba Cloud assuma essa função, selecione Current Account.
Other Account: Para permitir que usuários do RAM de outra conta da 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 Etapa 2 assumirá essa função, defina a entidade confiável como o ID da conta da Alibaba Cloud à qual pertence o usuário do RAM da Etapa 2. Consulte Criar uma função do RAM cuja entidade confiável é uma conta da Alibaba Cloud.
Também é possível Modifique a política de confiança de uma função do RAM para alterar quais usuários do RAM podem assumi-la.
Etapa 4: Fazer a chamada de API
Este exemplo utiliza o SDK for Python. Outros SDKs de linguagem também estão disponíveis: STS SDK. Também é possível usar outros Métodos de chamada.
Configure o ambiente Python
Baixe e instale o Python 3.
Execute python --version para verificar a instalação.
Configure variáveis de ambiente
Este exemplo armazena o par de AccessKey em variáveis de ambiente em vez de codificá-lo diretamente. Consulte Configurar variáveis de ambiente no Linux, macOS e Windows.
Instale dependências
pip install alibabacloud_credentials
pip install alibabacloud_sts20150401==1.1.3
pip install alibabacloud_tea_console
Baixe código de exemplo
No OpenAPI Portal, faça login como o usuário do RAM da Etapa 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 criada na Etapa 3. Consulte Como visualizar o ARN de uma função do RAM?
Na aba SDK Sample, selecione a aba Python e clique em Download Project.
Extraia o pacote e acesse o diretório alibabacloud_sample.
Execute 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"
}
}