Solucione problemas de erros de permissão relacionados a políticas do RAM e RBAC em clusters do ACK.
Falhas de autorização
ForbiddenQueryClusterNamespace: Forbidden query namespaces
O usuário ou função do RAM não tem permissões RBAC nos namespaces do cluster. Acesse Authorizations no console do ACK e atribua uma função RBAC ao usuário ou função do RAM.
APISERVER_403
O usuário ou função do RAM não tem as permissões RBAC necessárias no cluster. Acesse Authorizations no console do ACK e conceda a função RBAC necessária. Consulte Using RBAC Authorization.
O usuário atual do RAM não tem permissões de gerenciamento
O usuário ou função do RAM não pode conceder permissões RBAC a outros. Por padrão, apenas o proprietário da conta Alibaba Cloud ou um usuário do RAM com delegação explícita pode executar essa ação.
Para delegar o gerenciamento de RBAC a um usuário ou função do RAM (referido como Usuário A abaixo), conceda ambas as permissões a seguir:
Permissões de administrador RBAC: No console do ACK, em Authorizations, atribua a função predefinida de administrador ou a função cluster-admin ao Usuário A para os clusters e namespaces de destino.
Permissões do RAM: No console do RAM, anexe uma política personalizada ao Usuário A. A política deve permitir que o Usuário A consulte outros usuários e funções do RAM na mesma conta, anexe políticas específicas e gerencie permissões RBAC. Use o seguinte modelo:
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:GetUserPermissions",
"cs:GetSubUsers",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicyToRole"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
Substituaxxxxxxpelo nome da política que o Usuário A pode anexar. Para permitir qualquer política, substituaxxxxxxpor*.
Consulte Criar uma política personalizada do RAM e Conceder permissões RBAC a usuários ou funções do RAM.
Como identificar se um erro é causado pelo RAM ou pelo RBAC?
Analise a mensagem de erro:
Erros de política do RAM contêm RAM policy Forbidden ou STSToken policy Forbidden:
RAM policy Forbidden for action cs:DescribeEvents
STSToken policy Forbidden for action cs:DescribeClusterNodes
A política do RAM anexada ao usuário ou função não inclui a ação listada. Adicione a ação ausente. Consulte Criar uma política personalizada do RAM.
Erros de permissão RBAC contêm APISERVER_403, User "xxx" cannot xx resource ou ForbiddenQueryClusterNamespace:
events is forbidden: User "<uid>" cannot list resource "events" in API group "" at the cluster scope
ForbiddenQueryClusterNamespace, Forbidden query namespaces
Isso indica que o usuário do RAM <uid> não tem as permissões RBAC do Kubernetes necessárias. Conceda as permissões RBAC necessárias.
Anexei AdministratorAccess ou AliyunCSFullAccess a um usuário do RAM, mas ele ainda não consegue acessar os clusters
O ACK exige tanto a autorização do RAM quanto a autorização RBAC. Anexar AdministratorAccess ou AliyunCSFullAccess no console do RAM cobre apenas a camada do RAM. Acesse Authorizations no console do ACK e atribua também as funções RBAC ao usuário do RAM. Consulte Visão geral da autorização e Conceder permissões RBAC a usuários ou funções do RAM.
ForbiddenCheckControlPlaneLog
O usuário ou função do RAM não tem a função RBAC predefinida de administrador ou engenheiro de O&M. Acesse Authorizations no console do ACK e atribua a função de administrador ou engenheiro de O&M.
ForbiddenHelmUsage
O usuário ou função do RAM não tem a função RBAC predefinida de administrador. Acesse Authorizations no console do ACK e atribua a função de administrador.
ForbiddenRotateCert
O usuário ou função do RAM não tem a função RBAC predefinida de administrador. Acesse Authorizations no console do ACK e atribua a função de administrador.
ForbiddenAttachInstance
O usuário ou função do RAM não tem a função RBAC predefinida de administrador ou engenheiro de O&M. Acesse Authorizations no console do ACK e atribua a função de administrador ou engenheiro de O&M.
ForbiddenUpdateKMSState
O usuário ou função do RAM não tem a função RBAC predefinida de administrador ou engenheiro de O&M. Acesse Authorizations no console do ACK e atribua a função de administrador ou engenheiro de O&M.
Forbidden get trigger
O usuário ou função do RAM não tem a função RBAC predefinida de administrador, engenheiro de O&M ou desenvolvedor. Acesse Authorizations no console do ACK e atribua uma dessas funções.
Autorização RBAC
É possível conceder permissões em aplicativos específicos em vez de todos os recursos?
Sim. Crie uma ClusterRole personalizada que use o campo resourceNames para limitar as permissões a aplicativos específicos e vincule-a ao usuário ou função do RAM.
Faça logon no console do ACK.
No painel de navegação à esquerda, clique em Authorizations.
-
Na aba RAM Users, localize o usuário do RAM desejado e clique em Modify Permissions.
NotaA conta usada para fazer essa alteração deve ter pelo menos permissões de somente leitura no cluster e receber a função
cluster-adminou de administrador. Consulte Criar uma política personalizada do RAM. -
Clique em Add Permissions, selecione o cluster, o namespace e o tipo de autorização e clique em Submit. A tabela a seguir lista as permissões das funções RBAC predefinidas. Para as etapas subsequentes, consulte Conceder permissões RBAC a usuários ou funções do RAM.
NotaTambém é possível conceder permissões em todos os clusters para um usuário do RAM.
Um usuário ou função do RAM pode ter uma função RBAC predefinida e uma ou mais funções RBAC personalizadas para um determinado cluster ou namespace.
Função
Permissões RBAC em recursos do cluster
Administrador
Acesso de leitura e gravação a todos os recursos do namespace e a nós, volumes, namespaces e cotas no nível do cluster.
Engenheiro de O&M
Acesso de leitura e gravação a recursos visíveis no console em todos os namespaces; acesso somente leitura a nós, volumes, namespaces e cotas.
Desenvolvedor
Acesso de leitura e gravação a recursos visíveis no console em todos os namespaces ou em namespaces especificados.
Usuário restrito
Acesso somente leitura a recursos visíveis no console em todos os namespaces ou em namespaces especificados.
Função personalizada
Determinada pela ClusterRole selecionada. Revise as regras antes da atribuição para evitar permissões não intencionais. Consulte Criar uma política personalizada do RAM.
Um usuário do RAM com a função cs:admin não consegue criar objetos CustomResourceDefinition (CRD)
Esse problema afeta clusters criados antes de maio de 2019. A ClusterRole padrão cs:admin nesses clusters não tem permissões para alguns recursos do Kubernetes, incluindo a criação de CRD. Existem duas opções:
Atribua a função
cluster-adminao usuário ou função do RAM.Exclua a ClusterRole
cs:adminexistente e recrie-a com a seguinte definição:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cs:admin
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
Como usar um usuário ou função do RAM para atribuir funções RBAC a outros usuários?
Consulte O usuário atual do RAM não tem permissões de gerenciamento para ver as permissões do RAM e as atribuições de função RBAC necessárias.
Como encontrar o usuário ou função do RAM associado a uma ClusterRoleBinding ou RoleBinding?
Verifique o campo subjects. Se kind for User e name consistir em dígitos ou dígitos e hifens, trata-se do ID do usuário ou função do RAM.
O exemplo a seguir mostra uma ClusterRoleBinding para o usuário do RAM 1*** e uma RoleBinding para o usuário do RAM 2***:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: 1***-cluster-admin-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: 1***-1673419473
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: 2***-default-rolebinding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: 'cs:ns:dev'
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: '2***'
Por que não consigo modificar ou revogar as permissões RBAC do criador do cluster?
O ACK bloqueia solicitações para modificar ou revogar as permissões RBAC do criador do cluster, garantindo que o criador sempre mantenha o acesso ao cluster.
Para revogar as permissões do criador do cluster, exclua a ClusterRoleBinding diretamente:
-
Localize a ClusterRoleBinding do criador. Substitua
<uid>pelo UID da conta Alibaba Cloud.kubectl get clusterrolebinding | grep <uid> -
Faça backup e exclua a ClusterRoleBinding. Substitua
<name>pelo nome retornado na etapa anterior.kubectl get clusterrolebinding <name> -o yaml > <name>.yaml kubectl delete clusterrolebinding <name>
Quais permissões são necessárias para usar o recurso de terminal?
Atribua a função RBAC predefinida de administrador, engenheiro de O&M ou desenvolvedor ao usuário ou função do RAM. Conceda também a permissão do RAM para chamar cs:DescribeClusterUserKubeconfig. Consulte Conceder permissões RBAC a usuários ou funções do RAM e Criar uma política personalizada do RAM.
Como conceder permissões RBAC a um usuário que faz logon via CloudSSO?
Os usuários do CloudSSO fazem logon como funções do RAM, não como usuários individuais do RAM. Para conceder permissões RBAC, conceda-as à função do RAM, e não à conta de usuário individual.
Por exemplo, se o usuário fizer logon como AliyunReservedSSO-Policy-foo-bar-admin/foo.bar, conceda as permissões RBAC à função do RAM AliyunReservedSSO-Policy-foo-bar-admin.
Autorização do RAM
Um usuário do RAM com permissões de somente leitura em todos os clusters não consegue mais ver alguns clusters
A causa mais comum é uma conta incorreta ou um filtro de grupo de recursos não padrão, e não uma alteração de permissão. Verifique o seguinte:
Faça logon no console do ACK usando o usuário ou função do RAM correto.
Na barra de navegação superior, defina o escopo de recursos como .
Passe o mouse sobre o avatar no canto superior direito para verificar a identidade de logon.
Se um filtro de grupo de recursos estiver ativo, os clusters fora desse grupo ficarão ocultos, mesmo que as permissões estejam corretas.
Como conceder permissão a um usuário ou função do RAM para criar clusters?
Duas etapas são necessárias:
Atribua funções de sistema ao ACK usando sua conta Alibaba Cloud. As funções de sistema precisam ser atribuídas apenas uma vez. Em caso de dúvida, faça logon com sua conta Alibaba Cloud, clique em Cloud Resource Access Authorization e conclua a autorização. Consulte Funções padrão do ACK.
-
Anexe uma política personalizada do RAM ao usuário ou função do RAM que inclua a permissão
cs:CreateCluster:NotaA criação de clusters associa recursos da cloud, como VPCs, ao cluster. Certifique-se de que o usuário ou função do RAM possa acessar esses recursos.
Anexe a política
AliyunVPCReadOnlyAccesspara permitir a listagem de VPCs.Para outros tipos de recursos, consulte Autorização do RAM.
{ "Statement": [{ "Action": [ "cs:CreateCluster" ], "Effect": "Allow", "Resource": [ "*" ] }], "Version": "1" }Consulte Criar uma política personalizada do RAM.
Quais códigos de erro indicam que a conta Alibaba Cloud não possui as funções de service do ACK necessárias?
Esses códigos de erro indicam funções de service do ACK ausentes. Faça logon com uma conta Alibaba Cloud ou um usuário do RAM com AdministratorAccess e clique no link na mensagem de erro para concluir a atribuição.
|
Código de erro |
Exemplo de mensagem de erro |
|
ErrManagedKuberneteRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
ErrKubernetesAuditRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
ErrManagedAddonRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
ErrManagedSecurityRoleNotAttach |
please complete the security ramrole authorization at https://\\\* |
|
ErrEdgeAddonRoleNotAttach |
please complete the edge cluster addon's service ramrole authorization at https://\\\* |
|
ErrAutoScalerRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
ErrAcrHelperRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
ErrCostExporterRoleNotAttach |
please complete the cluster addon's service ramrole authorization at https://\\\* |
|
MissingAuth.AliyuncsManagedSecurityRole |
please complete the security ramrole authorization at https://\\\* |
Como acessar a página de atribuição de funções de sistema para o ACK?
Se as funções de sistema do ACK foram revogadas, reatribua-as seguindo as etapas em Criar rapidamente um cluster gerenciado do ACK.
Apenas uma conta Alibaba Cloud (não um usuário do RAM) pode reatribuir funções de sistema.
Uma função do RAM foi revogada de uma instância ECS — o que devo fazer?
Quando um aplicativo em uma instância ECS chama metadata api 100 e a função do RAM foi removida, a solicitação retorna um erro 404 ou uma mensagem como Message:Node condition RAMRoleError is now: True, reason: NodeHasNoRAMRole.
Reatribua a função do RAM à instância ECS:
Nó mestre (apenas clusters dedicados do ACK): Na página Cluster Information, acesse a aba Basic Information e atribua a Master RAM Role.
Nó worker: Na página Cluster Information, acesse a aba Basic Information e atribua a Worker RAM Role.
Consulte Substituir uma função do RAM da instância.
Se você modificou a política anexada à função do RAM, verifique se ela ainda contém as permissões necessárias. Se a modificação ocorreu antes do erro, tente reverter a alteração.
Como atribuir uma função personalizada do RAM a um cluster do ACK?
As cargas de trabalho online serão afetadas após eu excluir um usuário do RAM de um funcionário desligado?
A exclusão de um usuário do RAM não afeta o gerenciamento do cluster por outros usuários do RAM. No entanto, você deve usar uma conta Alibaba Cloud para revogar o arquivo kubeconfig emitido para o usuário do RAM excluído.
Antes de revogar o arquivo kubeconfig emitido para o usuário do RAM excluído, substitua-o por um novo arquivo kubeconfig em todos os aplicativos que o utilizam. Caso contrário, esses aplicativos perderão o acesso ao cluster.