Este tópico descreve como resolver erros de acesso negado que ocorrem quando você usa um usuário RAM ou uma função RAM para acessar a Alibaba Cloud.
Descrição do problema
Por padrão, as identidades RAM, incluindo usuários e funções RAM, não têm permissões. Elas só podem acessar recursos específicos da cloud após a concessão explícita de permissões. A autorização de uma identidade RAM tem dois efeitos: Allow e Deny. Quando uma identidade RAM executa uma operação em um recurso da Alibaba Cloud, o sistema exibe um erro de acesso negado se a operação for explicitamente negada ou não tiver permissão explícita. Esse último caso é denominado negação implícita. Os erros são exibidos da seguinte forma:
Erro de acesso ao console: a mensagem
Permission deniedaparece.Erro de chamada openapi: a chamada retorna um erro como
NoPermission,Forbidden.RAMouNotAuthorized.
Alguns products da Alibaba Cloud não oferecem suporte à autorização RAM. Se uma identidade RAM receber um erro de acesso negado ao acessar um product que não oferece suporte à autorização RAM, ela não poderá acessar os recursos desse product.
Soluções
Acesso ao console
A maioria dos pop-ups de erro de acesso negado no console fornece detalhes adicionais além da causa do erro.
Siga estas etapas para identificar a causa específica do erro de acesso negado e a respectiva solução.
-
Identifique o operador.
O campo Auth subject fornece detalhes sobre a identidade do operador da seguinte forma:
Identity Type: o tipo de identidade do operador. Pode ser um usuário RAM, uma função RAM ou uma identidade SSO federada.
Identity Information: o identificador da identidade. Um usuário RAM fornece um UID. Uma função RAM fornece o nome da função e o nome da sessão da função, por exemplo,
RoleName:RoleSessionName. Uma identidade SSO federada fornece o tipo e o nome do provedor de identidade, por exemplo,saml-provider/AzureAD.Account ID: o UID da conta Alibaba Cloud à qual a identidade atual pertence.
-
Identifique a permissão ausente para a operação.
O campo Action identifica a ação específica que causou o erro de acesso negado. Use essa ação para solucionar o problema ou conceder a permissão necessária.
-
Identifique o tipo de política que afeta a permissão.
O campo Policy Type identifica o tipo de política que causou o erro de acesso negado. Os tipos de política incluem políticas de controle, políticas de sessão, políticas de confiança de função, políticas baseadas em identidade no nível da conta e políticas baseadas em identidade no nível do grupo de recursos. Para obter mais informações, consulte How RAM evaluates policies.
O tipo de política determina como ajustá-la:
Se uma política de controle (ControlPolicy) negar a operação, entre em contato com a conta de gerenciamento do diretório de recursos da empresa para conceder a permissão. Uma política de controle define o limite de permissão para o acesso de membros em um diretório de recursos e tem precedência sobre as decisões de permissão dentro de uma conta.
Se uma política de sessão (SessionPolicy) negar a operação, entre em contato com o administrador da conta para verificar a política de sessão anexada à operação de API AssumeRole.
Se uma política de confiança de função (AssumeRolePolicy) negar a operação, entre em contato com o administrador da conta para verificar a política de confiança da função RAM assumida.
Se uma política baseada em identidade (AccountLevelIdentityBasedPolicy ou ResourceGroupLevelIdentityBasedPolicy) negar a operação, entre em contato com o administrador da conta para verificar as políticas de acesso concedidas à identidade do operador.
-
Determine se o erro de acesso negado resulta de uma negação implícita ou de uma negação explícita.
Negação implícita: a causa do erro indica que a operação atual não está autorizada, e o campo Denied Type indica
Insufficient permissions. Nesse caso, o administrador da conta deve conceder a permissão adicionando a Action a uma instrução Allow.-
Negação explícita: a causa do erro indica que a operação atual foi explicitamente negada, e o campo Denied Type indica
Explicit deny. Nesse caso, o administrador da conta deve verificar as permissões concedidas e se uma instrução Deny inclui a Action.NotaSe o tipo de política for uma política de controle, o sistema também retorna uma negação explícita quando a ação de autorização não está incluída em uma instrução Allow.
Além disso, para products que oferecem suporte ao diagnóstico de permissões, clique em Troubleshooting no pop-up de erro para visualize diretamente a causa e a solução.
A área Solutions do pop-up de diagnóstico de permissões recomenda políticas de sistema aplicáveis, como AliyunRAMFullAccess e AliyunRAMReadOnlyAccess, e fornece ações rápidas como View Authorization, crie Policy e Add permission.
O recurso de diagnóstico de permissões está disponível apenas para products que oferecem suporte à autorização RAM. Para products sem esse suporte, o diagnóstico de permissões não pode fornecer resultados de solução de problemas.
O diagnóstico de permissões é uma ferramenta de diagnóstico pós-evento. Primeiro, faça uma chamada de API e acione uma negação. Em seguida, use o texto cifrado de diagnóstico (EncodedDiagnosticMessage) ou o RequestID para rastrear o motivo da negação. Ambos os valores vêm da resposta da chamada de API negada. Atualmente, o diagnóstico de permissões não permite simular ou verificar as permissões efetivas finais de uma identidade RAM em um grupo de recursos sem uma chamada real.
Chamadas openapi
Ao chamar uma operação openapi diretamente por meio de um SDK da Alibaba Cloud, da CLI ou do openapi Developer Portal, a resposta de erro fornece detalhes do erro. A seguir, veja um exemplo de 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.alibabacloud.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 fornece os detalhes do erro de acesso negado. Siga estas etapas para identificar a causa específica e a respectiva solução.
-
Identifique o operador.
AuthPrincipalType: o tipo de identidade do operador. SubUser representa um usuário RAM, AssumedRoleUser representa uma função RAM e Federated representa uma identidade SSO federada.
AuthPrincipalDisplayName: o identificador da identidade. Um usuário RAM fornece um UID. Uma função RAM fornece o nome da função e o nome da sessão da função, por exemplo,
RoleName:RoleSessionName. Uma identidade SSO federada fornece o tipo e o nome do provedor de identidade, por exemplo,saml-provider/AzureAD.AuthPrincipalOwnerId: o UID da conta Alibaba Cloud à qual a identidade atual pertence.
-
Identifique a permissão ausente para a operação.
O campo AuthAction identifica a ação específica que causou o erro de acesso negado. Use essa ação para solucionar o problema ou conceder a permissão necessária.
-
Identifique o tipo de política que afeta a permissão.
O campo PolicyType identifica o tipo de política que causou o erro de acesso negado. Os tipos de política incluem políticas de controle, políticas de sessão, políticas de confiança de função, políticas baseadas em identidade no nível da conta e políticas baseadas em identidade no nível do grupo de recursos. Para obter mais informações, consulte How RAM evaluates policies.
O tipo de política determina como ajustá-la:
Se uma política de controle (ControlPolicy) negar a operação, entre em contato com a conta de gerenciamento do diretório de recursos da empresa para conceder a permissão. Uma política de controle define o limite de permissão para o acesso de membros em um diretório de recursos e tem precedência sobre as decisões de permissão dentro de uma conta.
Se uma política de sessão (SessionPolicy) negar a operação, entre em contato com o administrador da conta para verificar a política de sessão anexada à operação de API AssumeRole.
Se uma política de confiança de função (AssumeRolePolicy) negar a operação, entre em contato com o administrador da conta para verificar a política de confiança da função RAM assumida.
Se uma política baseada em identidade (AccountLevelIdentityBasedPolicy ou ResourceGroupLevelIdentityBasedPolicy) negar a operação, entre em contato com o administrador da conta para verificar as políticas de acesso concedidas à identidade do operador.
-
Determine se o erro de acesso negado resulta de uma negação implícita ou de uma negação explícita.
Negação implícita: o campo NoPermissionType indica
ImplicitDeny. Nesse caso, o administrador da conta deve conceder a permissão adicionando o AuthAction a uma instrução Allow.-
Negação explícita: o campo NoPermissionType indica
ExplicitDeny. Nesse caso, o administrador da conta deve verificar as permissões concedidas e se uma instrução Deny inclui o AuthAction.NotaSe o tipo de política for uma política de controle, o sistema também retorna uma negação explícita quando a ação de autorização não está incluída em uma instrução Allow.
Além disso, para products que oferecem suporte ao diagnóstico de permissões, forneça o valor completo de EncodedDiagnosticMessage ao administrador da conta. O administrador da conta pode acessar a página de diagnóstico de permissões RAM para investigar a causa. O administrador da conta deve ter a permissão ram:DecodeDiagnosticMessage.
Se a chamada openapi retornar um erro Forbidden.RAM, verifique se a API do product de destino oferece suporte à autorização RAM. Algumas APIs de products não oferecem suporte à autorização RAM e não podem ser chamadas por uma identidade RAM.
Cenário comum: Conceder permissões de products da cloud a um usuário RAM
Quando um usuário RAM opera um product da cloud, como ECS, OSS ou RDS, o console pode exibir Permission denied ou uma chamada openapi pode retornar um erro Forbidden.RAM. Isso geralmente ocorre porque o usuário RAM não recebeu as permissões necessárias para operar o product da cloud. Conceda permissões ao usuário RAM seguindo estas etapas:
Faça login no console do Resource Access Management (RAM) usando uma conta Alibaba Cloud.
No painel de navegação à esquerda, escolha .
Na lista de usuários, encontre o usuário RAM de destino e clique em nome de login do usuário.
clique em guia Permissions e, em seguida, clique em Grant Permission.
-
Na caixa de pesquisa de políticas, insira o nome do product da cloud de destino, como
ECS, selecione a política de sistema correspondente e confirme a autorização.A tabela a seguir lista os products da cloud comuns e suas políticas de sistema:
Product da cloud
Política de acesso total
Política de acesso somente leitura
Elastic Compute Service (ECS)
AliyunECSFullAccess
AliyunECSReadOnlyAccess
Object Storage Service (OSS)
AliyunOSSFullAccess
AliyunOSSReadOnlyAccess
ApsaraDB RDS
AliyunRDSFullAccess
AliyunRDSReadOnlyAccess
Virtual Private Cloud (VPC)
AliyunVPCFullAccess
AliyunVPCReadOnlyAccess
Server Load Balancer (SLB)
AliyunSLBFullAccess
AliyunSLBReadOnlyAccess
Para obter mais informações sobre políticas de sistema, consulte gerencie RAM user permissions.
Alguns products da cloud não oferecem suporte à autorização RAM. A tabela acima de políticas de sistema aplica-se apenas a products que oferecem suporte à autorização RAM. Se um erro de acesso negado persistir após a concessão de permissões, verifique a documentação do product correspondente para confirmar se ele oferece suporte à autorização RAM.
Cenário comum: Permissões insuficientes ao exportar a lista de instâncias no console do ECS
Um usuário RAM recebeu a política de sistema ReadOnlyAccess, mas um erro de acesso negado ainda aparece após o usuário clique em Export Instance List no console do ECS, ou a chamada retorna um erro User.NoPermission. Nos detalhes do erro, a Authorization action é oos:StartExecution e a Permission decision é Insufficient permissions.
O recurso Export Instance List no console do ECS executa uma tarefa de exportação de forma assíncrona por meio do CloudOps Orchestration Service (OOS). Essa ação requer as permissões oos:StartExecution e oos:ListExecutions. A política ReadOnlyAccess inclui apenas permissões de consulta somente leitura para recursos de products da cloud e não inclui permissões de execução do CloudOps Orchestration Service. Portanto, um usuário RAM com apenas permissões de somente leitura não pode acionar a exportação.
Anexe a política de sistema AliyunOOSFullAccess ao usuário RAM ou crie uma política personalizada que conceda as permissões oos:StartExecution e oos:ListExecutions. Em seguida, exporte a lista de instâncias novamente.
Ao solucionar um erro de acesso negado, verifique também se a operação envolve uma dependência entre products. Algumas operações do console chamam APIs de outros products da cloud, e não é possível inferir essas dependências apenas pelo nome do product no ponto de entrada da operação. Use a Authorization action nos detalhes do erro, por exemplo, oos:StartExecution, para determinar a permissão que está realmente ausente.
Falhas de autenticação HTTP 401
Se você encontrar um erro HTTP 401 (por exemplo, InvalidAccessKeyId.NotFound) ao chamar uma API ou fazer login no console, não será possível autenticar sua identidade. Siga estas etapas para solucionar o problema:
-
Verifique a validade da AccessKey.
Faça login no console do Resource Access Management (RAM) e visualize a lista de AccessKey. Se a AccessKey tiver sido excluída, crie uma nova AccessKey.
-
Confira o status do usuário RAM.
Verifique o status do usuário RAM e certifique-se de que o login no console ou a AccessKey correspondente esteja ativada.
-
Valide o período de validade do token do Security Token Service (STS).
Verifique se o token STS expirou. Uma credencial expirada causa falhas de autenticação. Chame a operação AssumeRole novamente para obter um novo token STS.