Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Criar o perfil do IAM do driver CSI do Amazon
O plugin CSI do Amazon EBS requer permissões do IAM para fazer chamadas para APIs da AWS em seu nome. Para obter mais informações, consulte Set up driver permission
nota
Pods terão acesso às permissões atribuídas ao perfil do IAM, a menos que você bloqueie o acesso ao IMDS. Para ter mais informações, consulte Práticas recomendadas de segurança para o Amazon EKS.
Pré-requisitos
-
Um cluster existente.
-
Um provedor OpenID Connect (OIDC) do AWS Identity and Access Management (IAM) existente para o cluster. Para determinar se você tem ou para criar uma, consulte Criar um provedor OIDC do IAM para o cluster.
O procedimento a seguir mostra como criar um perfil do IAM e associar a política gerenciada da AWS a ele. É possível usar o eksctl
, o AWS Management Console ou a AWS CLI.
nota
As etapas específicas desse procedimento foram escritas para usar o driver como um complemento do Amazon EKS. Diferentes etapas para usar o driver como um complemento autogerenciado. Para obter mais informações, consulte Configurar permissão de driver
- eksctl
-
Para criar o perfil do IAM do plugin Amazon EBS CSI com o
eksctl
-
Criar um perfil do IAM e associar uma política. AWS mantém uma política AWS gerenciada ou você pode criar sua própria política personalizada. Você pode criar uma função IAM e anexar a política gerenciada AWS com o seguinte comando. Substitua o
pelo nome do cluster. O comando implanta uma pilha do AWS CloudFormation que cria um perfil do IAM e anexa a política do IAM a ele. Se o cluster estiver nas Regiões da AWS: AWS GovCloud (EUA-Leste) ou AWS GovCloud (EUA-Oeste), substituamy-cluster
arn:aws:
porarn:aws-us-gov:
.eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster
my-cluster
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
\ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve -
Se você usar uma chave do KMS
personalizada para criptografia em seus volumes do Amazon EBS, personalize o perfil do IAM conforme necessário. Por exemplo, faça o seguinte: -
Copie e cole o código a seguir em um novo arquivo
. Substituakms-key-for-encryption-on-ebs
.json
pelo ARN da chave do KMS personalizada.custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
Crie a política do Você pode alterar
para um nome diferente. Porém, se fizer isso, não se esqueça de alterá-lo também em etapas posteriores.KMS_Key_For_Encryption_On_EBS_Policy
aws iam create-policy \ --policy-name
KMS_Key_For_Encryption_On_EBS_Policy
\ --policy-document file://kms-key-for-encryption-on-ebs
.json -
Anexe a política do IAM necessária à função com o comando a seguir. Substitua
pelo ID da sua conta. Se o cluster estiver nas Regiões da AWS: AWS GovCloud (EUA-Leste) ou AWS GovCloud (EUA-Oeste), substitua111122223333
arn:aws:
porarn:aws-us-gov:
.aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/KMS_Key_For_Encryption_On_EBS_Policy
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
-
-
- AWS Management Console
-
Para criar a função do IAM do plugin Amazon EBS CSI com o AWS Management Console
Abra o console IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação à esquerda, escolha Roles.
-
Na página Roles (Funções), selecione Create role (Criar função).
-
Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:
Na seção Trusted entity type (Tipo de entidade confiável), escolha Web identity (Identidade da Web).
-
Em Identity provider (Provedor de identidade), escolha OpenID ConnectOpenID Connect provider URL (URL do provedor OpenID Connect) para o cluster (conforme mostrado na guia Overview [Visão geral] do Amazon EKS).
-
Para Audience (Público), escolha
sts.amazonaws.com
. Escolha Próximo.
-
Na página Add permissions (Adicionar permissões), faça o seguinte:
-
Na caixa Filter policies (Políticas de filtro) insira
AmazonEBSCSIDriverPolicy
. -
Marque a caixa de seleção à esquerda do
AmazonEBSCSIDriverPolicy
retornado na pesquisa. Escolha Próximo.
-
-
Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:
-
Em Role name (Nome da função), insira um nome exclusivo para a função, como
.AmazonEKS_EBS_CSI_DriverRole
Em Adicionar tags (Opcional), adicione metadados ao perfil anexando tags como pares chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte Marcar recursos do IAM no Guia do usuário do IAM.
-
Selecione Criar função.
-
Depois que a função for criada, escolha a função no console a fim de abri-la para edição.
Escolha a guia Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).
-
Encontre a linha semelhante à seguinte:
"oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com"Adicione uma vírgula ao final da linha anterior e depois adicione a linha a seguir após a anterior. Substitua
pela Região da AWS em que está o cluster. Substituaregion-code
pelo ID do provedor OIDC do cluster.EXAMPLED539D4633E53DE1B71EXAMPLE
"oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" Escolha Update Policy (Atualizar política) para concluir.
-
Se você usar uma chave do KMS
personalizada para criptografia em seus volumes do Amazon EBS, personalize o perfil do IAM conforme necessário. Por exemplo, faça o seguinte: -
No painel de navegação à esquerda, escolha Políticas.
-
Na página Policies (Políticas), escolha Create Policy (Criar política).
-
Na página Criar política, escolha a guia JSON.
-
Copie e cole o seguinte código no editor, substituindo
pelo ARN da chave do KMS personalizada:custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
Escolha Próximo: etiquetas.
-
Na página Add tags (optional) (Adicionar etiquetas - opcional), escolha Next: Review (Próximo: revisar).
-
Em Name (Nome), insira um nome exclusivo para a sua política (por exemplo,
).KMS_Key_For_Encryption_On_EBS_Policy
-
Escolha Create policy (Criar política).
-
No painel de navegação à esquerda, escolha Roles.
-
Escolha
AmazonEKS_EBS_CSI_DriverRole
no console para abri-lo para edição. -
Na lista suspensa Add permissions (Adicionar permissões), escolha Attach policies (Anexar políticas).
-
Na caixa Filter policies (Políticas de filtro) insira
.KMS_Key_For_Encryption_On_EBS_Policy
-
Marque a caixa de seleção à esquerda do
retornado na pesquisa.KMS_Key_For_Encryption_On_EBS_Policy
-
Escolha Anexar políticas.
-
- AWS CLI
-
Para criar a função do IAM do plugin Amazon EBS CSI com o AWS CLI
-
Exiba a URL do provedor OIDC do cluster. Substitua
pelo nome do cluster. Se o resultado do comando formy-cluster
None
, revise os Pré-requisitos.aws eks describe-cluster --name
my-cluster
--query "cluster.identity.oidc.issuer" --output textVeja um exemplo de saída abaixo.
https://oidc.eks.
region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
Crie o perfil do IAM, concedendo a ação
AssumeRoleWithWebIdentity
.-
Copie o conteúdo a seguir em um arquivo chamado
. Substituaaws-ebs-csi-driver-trust-policy
.json
pelo ID da sua conta. Substitua111122223333
eEXAMPLED539D4633E53DE1B71EXAMPLE
pelos valores retornados na etapa anterior. Se o cluster estiver nas Regiões da AWS: AWS GovCloud (EUA-Leste) ou AWS GovCloud (EUA-Oeste), substituaregion-code
arn:aws:
porarn:aws-us-gov:
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com", "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } -
Crie a função. Você pode alterar
para um nome diferente. Se você alterá-lo, não se esqueça de alterá-lo em etapas superiores.AmazonEKS_EBS_CSI_DriverRole
aws iam create-role \ --role-name
AmazonEKS_EBS_CSI_DriverRole
\ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy
.json"
-
-
Associar uma política. AWS mantém uma política AWS gerenciada ou você pode criar sua própria política personalizada. Anexe a política gerenciada pela AWS função com o comando a seguir. Se o cluster estiver nas Regiões da AWS: AWS GovCloud (EUA-Leste) ou AWS GovCloud (EUA-Oeste), substitua
arn:aws:
porarn:aws-us-gov:
.aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name
AmazonEKS_EBS_CSI_DriverRole
-
Se você usar uma chave do KMS
personalizada para criptografia em seus volumes do Amazon EBS, personalize o perfil do IAM conforme necessário. Por exemplo, faça o seguinte: -
Copie e cole o código a seguir em um novo arquivo
. Substituakms-key-for-encryption-on-ebs
.json
pelo ARN da chave do KMS personalizada.custom-key-arn
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["
custom-key-arn
"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn
"] } ] } -
Crie a política do Você pode alterar
para um nome diferente. Porém, se fizer isso, não se esqueça de alterá-lo também em etapas posteriores.KMS_Key_For_Encryption_On_EBS_Policy
aws iam create-policy \ --policy-name
KMS_Key_For_Encryption_On_EBS_Policy
\ --policy-document file://kms-key-for-encryption-on-ebs
.json -
Anexe a política do IAM necessária à função com o comando a seguir. Substitua
pelo ID da sua conta. Se o cluster estiver nas Regiões da AWS: AWS GovCloud (EUA-Leste) ou AWS GovCloud (EUA-Oeste), substitua111122223333
arn:aws:
porarn:aws-us-gov:
.aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/KMS_Key_For_Encryption_On_EBS_Policy
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
-
-
Agora que você criou o perfil do IAM do driver CSI do Amazon EBS, pode continuar em Adicionar o complemento do driver da CSI do Amazon EBS. Quando você implanta o plug-in nesse procedimento, ele cria e é configurado para usar uma conta de serviço chamada ebs-csi-controller-sa
. A conta de serviço está vinculada a uma clusterrole
Kubernetes que recebe as permissões necessárias do Kubernetes.