Skip to main content
Uma versão mais recente deste produto está disponível.
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Crie uma função do IAM e o AWS Secret

Colaboradores netapp-aruldeepa

Você pode configurar pods do Kubernetes para acessar recursos da AWS autenticando como uma função do AWS IAM em vez de fornecer credenciais explícitas da AWS.

Observação Para autenticar usando uma função do AWS IAM, você deve ter um cluster do Kubernetes implantado usando o EKS.

Crie o segredo do AWS Secret Manager

Este exemplo cria um segredo do AWS Secret Manager para armazenar credenciais do Trident CSI:

aws secretsmanager create-secret --name trident-secret --description "Trident CSI credentials"\
  --secret-string "{\"username\":\"vsadmin\",\"password\":\"<svmpassword>\"}"

Criar política do IAM

Os exemplos a seguir criam uma política do IAM usando a AWS CLI:

aws iam create-policy --policy-name AmazonFSxNCSIDriverPolicy --policy-document file://policy.json
  --description "This policy grants access to Trident CSI to FSxN and Secret manager"

Policy JSON file:

policy.json:
{
    "Statement": [
        {
            "Action": [
                "fsx:DescribeFileSystems",
                "fsx:DescribeVolumes",
                "fsx:CreateVolume",
                "fsx:RestoreVolumeFromSnapshot",
                "fsx:DescribeStorageVirtualMachines",
                "fsx:UntagResource",
                "fsx:UpdateVolume",
                "fsx:TagResource",
                "fsx:DeleteVolume"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": "secretsmanager:GetSecretValue",
            "Effect": "Allow",
            "Resource": "arn:aws:secretsmanager:<aws-region>:<aws-account-id>:secret:<aws-secret-manager-name>*"
        }
    ],
    "Version": "2012-10-17"
}

Crie uma função do IAM para a conta de serviço

CLI DA AWS
aws iam create-role --role-name trident-controller \
  --assume-role-policy-document file://trust-relationship.json
  • arquivo trust-relation.json:*

{
    "Version": "2012-10-17",
    "Statement": [
        { "Effect": "Allow",
        "Principal": {
            "Federated": "arn:aws:iam::<account_id>:oidc-provider/<oidc_provider>"
        },
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {
            "StringEquals": {
                "<oidc_provider>:aud": "sts.amazonaws.com",
                "<oidc_provider>:sub": "system:serviceaccount:trident:trident-controller"
            }
        }
    }
   ]
}

Atualize os seguintes valores no trust-relationship.json arquivo:

  • <account_id> - seu ID de conta da AWS

  • <oidc_provider> - o OIDC do seu cluster EKS. Você pode obter o oidc_provider executando:

aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer"\
  --output text | sed -e "s/^https:\/\///"

Anexar a função do IAM com a política do IAM:

Depois que a função tiver sido criada, anexe a política (que foi criada na etapa acima) à função usando este comando:

aws iam attach-role-policy --role-name my-role --policy-arn <IAM policy ARN>

Verifique se o provedor OICD está associado:

Verifique se seu provedor de OIDC está associado ao cluster. Você pode verificá-lo usando este comando:

aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

Use o seguinte comando para associar o OIDC do IAM ao cluster:

eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
eksctl

O exemplo a seguir cria uma função do IAM para a conta de serviço no EKS:

eksctl create iamserviceaccount --name trident-controller --namespace trident \
  --cluster <my-cluster> --role-name <AmazonEKS_FSxN_CSI_DriverRole> --role-only \
  --attach-policy-arn <IAM-Policy ARN> --approve