Obtém uma credencial de identidade temporária (token STS) para assumir uma função RAM.
Descrição da operação
Cenários comuns
-
Autorização de acesso temporário: normalmente, invoque operações de API a partir do lado do servidor para evitar vazamentos de chave de acesso. No entanto, em alguns cenários de upload de arquivos, é melhor usar uploads diretos do lado do cliente para evitar a sobrecarga de encaminhamento do lado do servidor. Nesse caso, o servidor pode emitir um token de segurança temporário (token STS) e o cliente pode usar o token STS para fazer upload direto de recursos. Para obter mais informações, consulte Usar tokens de segurança temporários para aplicativos móveis acessarem o Alibaba Cloud.
-
Acesso entre contas: se você tiver várias contas do Alibaba Cloud, como Conta A e Conta B, e quiser que a Conta B acesse recursos específicos da Conta A. Nesse caso, você pode criar uma função RAM na Conta A com a Conta B como entidade confiável e conceder autorização a um usuário do Resource Access Management (RAM) ou função RAM na Conta B para assumir a função. Em seguida, o usuário RAM ou a função RAM na Conta B pode acessar os recursos específicos da Conta A assumindo a função. Para obter mais informações, consulte Acessar recursos entre contas do Alibaba Cloud.
Antes de começar
Você não pode invocar esta operação usando uma conta do Alibaba Cloud. Você só pode invocar esta operação como um usuário RAM ou uma função RAM. Certifique-se de que o chamador (o usuário RAM ou a função RAM) tenha recebido a autorização para assunção de função STS (AliyunSTSAssumeRoleAccess).
Caso contrário, o seguinte erro será retornado:
You are not authorized to do this action. You should be authorized by RAM.
Causas e soluções:
O chamador não possui a política de acesso que permite a assunção de função STS: anexe a política do sistema (AliyunSTSAssumeRoleAccess) ou uma política personalizada ao chamador. Para obter mais informações, consulte Posso especificar a função RAM que um usuário RAM pode assumir? e Conceder permissões a um usuário RAM.
A política de confiança da função RAM não inclui o chamador, o que significa que a função RAM não permite que o chamador a assuma: adicione uma política de confiança que permita ao chamador assumir a função RAM. Para obter mais informações, consulte Modificar a política de confiança de uma função RAM.
Práticas recomendadas
Um token STS é válido por um período especificado após sua emissão. Recomendamos que você defina um período de validade razoável para o token e reutilize o token dentro do período de validade. Isso evita que o limite de taxa de emissão de tokens STS afete seus negócios quando a taxa de solicitação aumenta. Para obter mais informações sobre o limite de taxa, consulte Há um limite de quantas vezes você pode invocar o serviço STS?. Você pode definir o período de validade do token usando o parâmetro de solicitação DurationSeconds.
Em cenários como upload ou download de arquivos OSS a partir de clientes móveis, o volume de acesso é grande. Mesmo que você reutilize tokens STS, os requisitos de limitação podem não ser atendidos. Para evitar que a limitação do STS se torne um gargalo para o acesso ao OSS, experimente a solução OSS de incluir uma assinatura em uma URL. Para obter mais informações, consulte Incluir uma assinatura em uma URL e Assinatura no lado do servidor e upload direto.
Experimente agora
Testar
Autorização RAM
|
Ação |
Nível de acesso |
Tipo de recurso |
Chave de condição |
Ação dependente |
|
sts:AssumeRole |
get |
*Role
|
|
|
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
| DurationSeconds |
integer |
Não |
O período de validade do token. Unidade: segundos. O período mínimo de validade é de 900 segundos, e o período máximo de validade é o valor Você pode definir o parâmetro |
3600 |
| Policy |
string |
Não |
A política de acesso adicional anexada ao token STS para restringir ainda mais as permissões do token STS. Detalhes:
O valor deve ter de 1 a 2.048 caracteres. Para obter mais informações sobre elementos e exemplos de políticas de acesso, consulte Elementos básicos de uma política de acesso e Exemplos de políticas de acesso. |
{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} |
| RoleArn |
string |
Sim |
O ARN da função RAM a ser assumida. A entidade confiável da função RAM é uma conta do Alibaba Cloud. Para obter mais informações, consulte Criar uma função RAM para uma conta confiável do Alibaba Cloud ou CreateRole. Formato: Você pode visualizar o ARN da função RAM no console RAM ou chamando uma operação de API. Detalhes:
|
acs:ram::123456789012****:role/adminrole |
| RoleSessionName |
string |
Sim |
O nome da sessão da função. Este parâmetro é definido pelo usuário. Normalmente, defina este parâmetro como a identidade do usuário que chama a operação de API, como o nome de usuário. Nos logs do ActionTrail, mesmo que as operações sejam realizadas pela mesma função RAM, você pode identificar o operador real com base no O valor deve ter de 2 a 64 caracteres e pode conter letras, dígitos e os seguintes caracteres especiais: |
alice |
| ExternalId |
string |
Não |
O ID externo da função. Este parâmetro é fornecido por uma parte externa para identificar a função. O objetivo principal é evitar o problema de deputado confuso. Para obter mais informações, consulte Usar ExternalId para evitar o problema de deputado confuso. O valor deve ter de 2 a 1.224 caracteres e pode conter letras, dígitos e os seguintes caracteres especiais: |
abcd1234 |
| SourceIdentity |
string |
Não |
A identidade de origem. Ao assumir uma função, você pode especificar a identidade de origem do chamador como a identidade inicial da sessão. A identidade de origem persiste ao longo das sessões encadeadas de assunção de função e não pode ser alterada. Isso garante a rastreabilidade e a segurança das operações. O valor de SourceIdentity deve ter de 2 a 64 caracteres e pode conter letras, dígitos e os seguintes caracteres especiais: |
Alice |
Para obter mais informações sobre parâmetros de solicitação comuns, consulte Parâmetros comuns.
Elementos de resposta
|
Elemento |
Tipo |
Descrição |
Exemplo |
|
object |
Os parâmetros de resposta. |
||
| RequestId |
string |
O ID da solicitação. |
6894B13B-6D71-4EF5-88FA-F32781734A7F |
| AssumedRoleUser |
object |
A identidade temporária usada para a assunção de função. |
|
| AssumedRoleId |
string |
O ID da identidade temporária. |
34458433936495****:alice |
| Arn |
string |
O ARN da identidade temporária. |
acs:ram::123456789012****:role/adminrole/alice |
| Credentials |
object |
A credencial de acesso. |
|
| SecurityToken |
string |
O token de segurança. Nota
O comprimento do token de segurança não é fixo. Não limite o comprimento máximo do token de segurança. |
******** |
| Expiration |
string |
A hora em que o token expira. A hora é exibida em UTC. |
2015-04-09T11:52:19Z |
| AccessKeySecret |
string |
O segredo da AccessKey. |
wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK**** |
| AccessKeyId |
string |
O ID da AccessKey. |
STS.L4aBSCSJVMuKg5U1**** |
| SourceIdentity |
string |
A identidade de origem. Ao assumir uma função, você pode especificar a identidade de origem do chamador como a identidade inicial da sessão. A identidade de origem persiste ao longo das sessões encadeadas de assunção de função e não pode ser alterada. Isso garante a rastreabilidade e a segurança das operações. Se a identidade de origem não for especificada, este campo não será retornado. |
Alice |
Exemplos
Resposta de sucesso
JSON formato
{
"RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F",
"AssumedRoleUser": {
"AssumedRoleId": "34458433936495****:alice",
"Arn": "acs:ram::123456789012****:role/adminrole/alice"
},
"Credentials": {
"SecurityToken": "********",
"Expiration": "2015-04-09T11:52:19Z",
"AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****",
"AccessKeyId": "STS.L4aBSCSJVMuKg5U1****"
},
"SourceIdentity": "Alice"
}
Códigos de erro
|
Código de status HTTP |
Código de erro |
Mensagem de erro |
Descrição |
|---|---|---|---|
| 400 | InvalidParameter.DurationSeconds | The Min/Max value of DurationSeconds is 15min/1hr. | O parâmetro DurationSeconds é inválido. O valor mínimo de DurationSeconds é de 15 minutos e o valor máximo é de 1 hora. |
| 400 | InvalidParameter.ExternalId | The parameter ExternalId is wrongly formed. | O parâmetro ExternalId é inválido. |
| 400 | InvalidParameter.RoleArn | The parameter RoleArn is wrongly formed. | O parâmetro RoleArn não pode estar vazio. |
| 400 | InvalidParameter.RoleSessionName | The parameter RoleSessionName is wrongly formed. | O formato do parâmetro RoleSessionName é inválido. |
| 400 | InvalidParameter.SerialNumber | The parameter SerialNumber is wrongly formed. | |
| 400 | InvalidParameter.TokenCode | The parameter TokenCode is wrongly formed. | |
| 400 | InvalidParameter.PolicyGrammar | The parameter Policy has not passed grammar check. | A sintaxe do parâmetro Policy falhou na validação. |
| 400 | InvalidParameter.PolicySize | The size of Policy must be smaller than 2048 bytes. | O parâmetro Policy é inválido. O tamanho da Policy deve ser menor que 2048 bytes. |
| 400 | InvalidParameter.ContentType | The ContentType request header must be either "application/json" or "application/x-www-form-urlencoded". | |
| 500 | InternalError | STS Server Internal Error happened, please send the RequestId to us. | Ocorreu um erro interno. |
| 403 | NoPermission | You are not authorized to do this action. You should be authorized by RAM. | |
| 403 | AuthenticationFail.ApiUsername | The specified api username is not legal. | |
| 403 | AuthenticationFail.ApiPassword | The specified api password is not legal. | |
| 404 | EntityNotExist.Role | The specified Role not exists . |
Consulte Códigos de Erro para uma lista completa.
Notas de versão
Consulte Notas de Versão para uma lista completa.