Este tópico descreve como diagnosticar e resolver erros de permissão que ocorrem quando um usuário RAM ou uma função RAM acessa recursos da Alibaba Cloud.
Descrição do problema
Por padrão, principais RAM, como usuários e funções RAM, não têm permissões. O acesso a recursos específicos da nuvem só ocorre após a concessão explícita de permissões. As permissões podem ser Allow (Permitir) ou Deny (Negar). Quando um principal RAM executa uma ação em um recurso da Alibaba Cloud, o sistema retorna um erro de acesso negado se a ação estiver sujeita a uma negação explícita ou não tiver permissão explícita (também conhecida como negação implícita). Esses erros incluem:
Erro de acesso ao console: exibição da mensagem
Permission Denied.Erro de chamada de API: retorno de um código de erro como
NoPermission,Forbidden.RAMouNotAuthorized.
Soluções
Acesso ao console
A maioria das mensagens pop-up de acesso negado no console fornece informações detalhadas de diagnóstico sobre o erro.
Siga estas etapas para diagnosticar e resolver o erro.
-
Identifique o principal.
A seção auth subject fornece informações detalhadas sobre o principal que fez a solicitação. Os detalhes incluem:
Identity Type: tipo de principal, como usuário RAM, função RAM ou usuário federado.
Identity Information: identificador exclusivo do principal. Para um usuário RAM, corresponde ao ID do usuário. Para uma função RAM, segue o formato
RoleName:RoleSessionName. Para um usuário federado, apresenta um formato comosaml-provider/AzureAD.account ID: ID da conta Alibaba Cloud proprietária do principal.
-
Identifique a permissão ausente.
O campo Action mostra a ação específica negada, informação útil para solucionar o problema ou conceder a permissão.
-
Identifique o tipo de política relevante.
O campo Policy Type indica o tipo de política que causou a negação, incluindo política de controle, política de sessão, política de confiança e política baseada em identidade (no nível da conta ou do grupo de recursos). Para obter mais informações, consulte Processo de avaliação de políticas.
O tipo de política determina como ajustá-la:
Se uma política de controle negou a ação, entre em contato com o administrador da conta de gerenciamento no seu Resource Directory para conceder a permissão. Uma política de controle define os limites de permissão para contas membros em um Resource Directory e tem precedência sobre as políticas dentro de uma conta.
Caso uma política de sessão tenha causado a negação, solicite ao administrador da sua conta que verifique a política de sessão transmitida durante a chamada da operação da API AssumeRole.
Para negações decorrentes de uma política de confiança, peça ao administrador da conta para revisar a política de confiança da função RAM assumida.
Quando uma política baseada em identidade negar a ação, contate o administrador da conta para verificar as políticas de permissão anexadas ao principal.
-
Determine se a negação foi implícita ou explícita.
Negação implícita: a mensagem de erro indica que a ação não está autorizada e o campo Denied Type mostra
Insufficient Permissions. Nesse caso, o administrador da sua conta deve conceder a permissão necessária adicionando a Action a uma instrução Allow em uma política.-
Negação explícita: a mensagem de erro indica que a ação foi explicitamente negada e o campo Denied Type exibe
Explicit Deny. Nesta situação, o administrador da conta precisa revisar as políticas anexadas e verificar se uma instrução Deny inclui a Action.NotaSe o tipo de política for uma política de controle, o sistema também retornará uma negação explícita caso a ação solicitada não esteja incluída em uma instrução Allow.
Além disso, para produtos compatíveis com diagnóstico de permissão, clique em Troubleshooting no pop-up de erro para visualizar a causa e a solução do problema.
A seção Solution do pop-up de diagnóstico de permissão recomenda políticas de sistema relevantes, como AliyunRAMFullAccess e AliyunRAMReadOnlyAccess. Ela também fornece ações rápidas como Visualize Authorization, Crie Policy e Add Permission.
Chamadas de API
As respostas de erro de chamadas de API feitas com um SDK da Alibaba Cloud, a CLI ou o OpenAPI Developer Portal fornecem informações detalhadas. O exemplo a seguir mostra uma resposta de erro retornada durante a depuração no OpenAPI Developer Portal.
{
"RequestId": "1090E608-D26F-5A08-BAE3-80D350E9FE20",
"HostId": "ram.aliyuncs.com",
"Code": "NoPermission",
"Message": "You are not authorized to do this action. Resource: acs:ram:*:xxx:user/* Action: ram:ListUsers",
"Recommend": "https://next.api.aliyun.com/troubleshoot?q=NoPermission&product=Ram",
"AccessDeniedDetail": {
"PolicyType": "AccountLevelIdentityBasedPolicy",
"AuthPrincipalOwnerId": "xxx",
"EncodedDiagnosticMessage": "AQIBIAAAAMDAbkn...jHF4TLvjT8hp17I0RFKObkV4=",
"AuthPrincipalType": "SubUser",
"AuthPrincipalDisplayName": "xxx",
"NoPermissionType": "ExplicitDeny",
"AuthAction": "ram:ListUsers"
}
}
O campo AccessDeniedDetail na resposta de erro contém os detalhes do erro de permissão. Siga estas etapas para encontrar a causa e resolver o problema.
-
Identifique o principal.
AuthPrincipalType: tipo de principal. SubUser indica um usuário RAM, AssumedRoleUser indica uma função RAM e Federated indica um usuário federado.
AuthPrincipalDisplayName: identificador exclusivo do principal. Para um usuário RAM, corresponde ao ID do usuário. Para uma função RAM, segue o formato
RoleName:RoleSessionName. Para um usuário federado, apresenta um formato comosaml-provider/AzureAD.AuthPrincipalOwnerId: ID da conta Alibaba Cloud proprietária do principal.
-
Identifique a permissão ausente.
O campo AuthAction exibe a ação específica negada, permitindo solucionar o problema ou conceder a permissão.
-
Identifique o tipo de política relevante.
O campo PolicyType mostra o tipo de política que causou a negação, abrangendo política de controle, política de sessão, política de confiança e política baseada em identidade (no nível da conta ou do grupo de recursos). Para mais detalhes, veja Processo de avaliação de políticas.
O ajuste da política depende do seu tipo:
Se uma política de controle negou a ação, entre em contato com o administrador da conta de gerenciamento no seu Resource Directory para conceder a permissão. Uma política de controle define os limites de permissão para contas membros em um Resource Directory e tem precedência sobre as políticas dentro de uma conta.
Caso uma política de sessão tenha causado a negação, solicite ao administrador da sua conta que verifique a política de sessão transmitida durante a chamada da operação da API AssumeRole.
Para negações decorrentes de uma política de confiança, peça ao administrador da conta para revisar a política de confiança da função RAM assumida.
Quando uma política baseada em identidade negar a ação, contate o administrador da conta para verificar as políticas de permissão anexadas ao principal.
-
Determine se a negação foi implícita ou explícita.
Negação implícita: o campo NoPermissionType retorna
ImplicitDeny. Nessa situação, o administrador da sua conta deve conceder a permissão necessária adicionando o AuthAction a uma instrução Allow em uma política.-
Negação explícita: o campo NoPermissionType retorna
ExplicitDeny. Neste caso, o administrador da conta precisa revisar as políticas anexadas e verificar se uma instrução Deny inclui o AuthAction.NotaSe o tipo de política for uma política de controle, o sistema também retornará uma negação explícita caso a ação solicitada não esteja incluída em uma instrução Allow.
Adicionalmente, para produtos compatíveis com diagnóstico de permissão, forneça todo o conteúdo do campo EncodedDiagnosticMessage ao administrador da sua conta. O administrador pode então usar essa mensagem na página de diagnóstico de permissões do RAM para solucionar o problema. Para isso, o administrador da conta deve ter a permissão ram:DecodeDiagnosticMessage.
Concessão de permissões a um usuário RAM
Quando um usuário RAM utiliza um produto de nuvem como ECS, OSS ou RDS, o console exibe um erro Permission Denied ou uma chamada de API retorna um erro Forbidden.RAM. Esse erro geralmente ocorre porque o usuário RAM não possui as permissões necessárias para aquele produto de nuvem. Para conceder permissões ao usuário RAM, siga estas etapas:
Faça login no console RAM com sua conta Alibaba Cloud.
No painel de navegação à esquerda, escolha .
Na página Users, localize o usuário RAM desejado e clique em no nome de usuário.
Clique em na aba Permissions e depois clique em Grant Permission.
-
Na caixa de pesquisa de políticas, insira o nome do produto de nuvem alvo, como
ECS. Selecione a política de sistema correspondente e conceda a permissão.A tabela a seguir lista produtos de nuvem comuns e suas políticas de sistema correspondentes.
Produto de nuvem
Política de acesso total
Política de acesso somente leitura
ECS
AliyunECSFullAccess
AliyunECSReadOnlyAccess
OSS
AliyunOSSFullAccess
AliyunOSSReadOnlyAccess
RDS
AliyunRDSFullAccess
AliyunRDSReadOnlyAccess
VPC
AliyunVPCFullAccess
AliyunVPCReadOnlyAccess
SLB
AliyunSLBFullAccess
AliyunSLBReadOnlyAccess
Para obter mais informações sobre políticas de sistema, consulte Gerencie permissões para usuários RAM.