Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

IAM-Rolle und AWS Secret erstellen

Beitragende

Sie können Kubernetes-Pods für den Zugriff auf AWS-Ressourcen konfigurieren, indem Sie sich als AWS IAM-Rolle authentifizieren anstatt dafür explizite AWS-Anmeldedaten bereitstellen zu müssen.

Hinweis Um sich mit einer AWS IAM-Rolle zu authentifizieren, müssen Sie über ein Kubernetes-Cluster mit EKS verfügen.

Erstellen Sie den AWS Secret Manager-Schlüssel

Dieses Beispiel erstellt einen AWS Secret Manager-Schlüssel, um Trident-CSI-Anmeldedaten zu speichern:

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

IAM-Richtlinie erstellen

In den folgenden Beispielen wird eine IAM-Richtlinie über die AWS-CLI erstellt:

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"

JSON-Beispiel für Richtlinien:

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"
}

Um die automatische Backend-Konfiguration für Amazon FSX zu aktivieren, fügen Sie die folgenden Aktionen zur Datei hinzu policy.json, während Sie eine IAM-Richtlinie erstellen:

  • "fsx:CreateStorageVirtualMachine"

  • "fsx:DescribeStorageVirtualMachines"

  • "secretsmanager:CreateSecret"

  • "secretsmanager:DeleteSecret"

  • "secretsmanager:TagResource"

Policy JSON-Dateibeispiel für automatische Backend-Konfiguration:

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

Erstellen Sie eine IAM-Rolle für das Dienstkonto

aws iam create-role --role-name trident-controller \
  --assume-role-policy-document file://trust-relationship.json

Trust-Relationship.json-Datei:

{
    "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"
            }
        }
    }
   ]
}

Aktualisieren Sie die folgenden Werte in der trust-relationship.json Datei:

  • <account_id> - Ihre AWS-Konto-ID

  • <oidc_provider> - das OIDC Ihres EKS-Clusters. Sie können den oidc_Provider erhalten, indem Sie Folgendes ausführen:

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

Die IAM-Rolle mit der IAM-Richtlinie verknüpfen:

Nachdem die Rolle erstellt wurde, hängen Sie die Richtlinie (die im obigen Schritt erstellt wurde) mit diesem Befehl an die Rolle an:

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

Verify OICD Provider is associated:

Vergewissern Sie sich, dass der OIDC-Anbieter dem Cluster zugeordnet ist. Sie können sie mit diesem Befehl überprüfen:

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

Verwenden Sie den folgenden Befehl, um IAM OIDC dem Cluster zuzuordnen:

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