

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden Sie AWS Secrets Manager Geheimnisse in Amazon Elastic Kubernetes Service
<a name="integrate_eks"></a>

Um Secrets from AWS Secrets Manager (ASCP) als in Amazon EKS-Pods gemountete Dateien anzuzeigen, können Sie den AWS Secrets and Configuration Provider für den Kubernetes Secrets Store CSI-Treiber verwenden. Das ASCP funktioniert mit Amazon Elastic Kubernetes Service 1.17\$1, auf dem eine Amazon EC2 EC2-Knotengruppe ausgeführt wird. AWS Fargate Knotengruppen werden nicht unterstützt. Mit dem ASCP können Sie Ihre Secrets in Secrets Manager speichern und verwalten und diese dann über Ihre auf Amazon EKS ausgeführten Workloads abrufen. Wenn Ihr Secret mehrere Schlüssel-Wert-Paare im JSON-Format enthält, können Sie wählen, welche in Amazon EKS bereitgestellt werden sollen. ASCP verwendet JMESPath-Syntax, um die Schlüssel-Wert-Paare in Ihrem Secret abzufragen. Der ASCP funktioniert auch mit Parametern des Parameter-Speichers. ASCP bietet zwei Authentifizierungsmethoden mit Amazon EKS. Der erste Ansatz verwendet IAM Roles for Service Accounts (IRSA). Der zweite Ansatz verwendet Pod Identities. Jeder Ansatz hat eigene Vorteile und Anwendungsfälle.

## ASCP mit IAM Roles for Service Accounts (IRSA)
<a name="csi_driver_overview"></a>

Das ASCP mit IAM-Rollen für Servicekonten (IRSA) ermöglicht es Ihnen, Geheimnisse AWS Secrets Manager als Dateien in Ihren Amazon EKS-Pods zu mounten. Dieser Ansatz ist für folgende Szenarien geeignet:
+ Sie müssen Geheimnisse als Dateien in Ihren Pods bereitstellen.
+ Sie verwenden Amazon-EKS-Version 1.17 oder höher mit Amazon-EC2-Knotengruppen.
+ Sie möchten bestimmte Schlüssel-Wert-Paare aus JSON-formatierten Geheimnissen abrufen.

Weitere Informationen finden Sie unter [Verwenden Sie AWS Secrets and Configuration Provider CSI mit IAM-Rollen für Dienstkonten (IRSA)](integrating_ascp_irsa.md).

## ASCP mit Pod Identity
<a name="pod_identity_overview"></a>

Die ASCP-Methode mit Pod Identity verbessert die Sicherheit und vereinfacht die Konfiguration für den Zugriff auf geheime Daten in Amazon EKS. Dieser Ansatz bietet Vorteile in folgenden Szenarien:
+ Sie benötigen eine detailliertere Berechtigungsverwaltung auf Pod-Ebene.
+ Sie verwenden Amazon-EKS-Version 1.24 oder höher.
+ Sie benötigen eine höhere Leistung und Skalierbarkeit.

Weitere Informationen finden Sie unter [Verwenden Sie AWS Secrets and Configuration Provider CSI mit Pod Identity für Amazon EKS](ascp-pod-identity-integration.md).

## Den richtigen Ansatz wählen
<a name="comparison"></a>

Bei der Entscheidung zwischen ASCP mit IRSA und ASCP mit Pod Identity sollten Sie die folgenden Faktoren berücksichtigen:
+ Amazon EKSversion: Pod Identity erfordert Amazon EKS 1.24\$1, während der CSI-Treiber mit Amazon EKS 1.17\$1 funktioniert.
+ Sicherheitsanforderungen: Pod Identity bietet eine detailliertere Kontrolle auf Pod-Ebene.
+ Leistung: Pod Identity schneidet in umfassenden Umgebungen im Allgemeinen besser ab.
+ Komplexität: Pod Identity vereinfacht die Einrichtung, da keine separaten Servicekonten erforderlich sind.

Wählen Sie die Methode, die am besten zu Ihren spezifischen Anforderungen und Ihrer Amazon-EKS-Umgebung passt.

# Installieren von ASCP für Amazon EKS
<a name="ascp-eks-installation"></a>

In diesem Abschnitt wird erklärt, wie Sie den AWS Secrets and Configuration Provider für Amazon EKS installieren. Mit ASCP können Sie Geheimnisse aus Secrets Manager und Parameter aus AWS Systems Manager Dateien in Amazon EKS Pods bereitstellen.

## Voraussetzungen
<a name="prerequisites"></a>
+ Ein Amazon-EKS-Cluster
  + Version 1.24 oder höher für Pod Identity
  + Version 1.17 oder höher für IRSA
+ Das AWS CLI installierte und konfigurierte
+ kubectl, für Ihren Amazon-EKS-Cluster installiert und konfiguriert
+ Helm (Version 3.0 oder höher)

## Installieren und Konfigurieren von ASCP
<a name="integrating_csi_driver_install"></a>

Das ASCP ist GitHub im [secrets-store-csi-provider-aws-Repository verfügbar.](https://github.com/aws/secrets-store-csi-driver-provider-aws) Das Repo enthält auch YAML-Beispieldateien zum Erstellen und Mounten eines Secrets. 

Während der Installation können Sie festlegen, dass ASCP einen FIPS-Endpunkt verwenden soll. Eine Liste der Endpunkte finden Sie unter [AWS Secrets Manager Endpunkte](asm_access.md#endpoints).

**Um das ASCP als EKS-Add-on zu installieren**

1. Installation `eksctl` ([Installationsanweisungen](https://docs.aws.amazon.com/eks/latest/eksctl/installation.html))

1. Führen Sie den folgenden Befehl aus, um das Add-on mit der [Standardkonfiguration](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/charts/secrets-store-csi-driver-provider-aws/values.yaml) zu installieren:

   ```
   eksctl create addon --cluster <your_cluster> --name aws-secrets-store-csi-driver-provider
   ```

   Wenn Sie das Add-on konfigurieren möchten, führen Sie stattdessen den folgenden Installationsbefehl aus:

   ```
   aws eks create-addon --cluster-name <your_cluster> --addon-name aws-secrets-store-csi-driver-provider --configuration-values 'file://path/to/config.yaml'
   ```

   Die Konfigurationsdatei kann eine YAML- oder JSON-Datei sein. Um das Konfigurationsschema für das Add-on zu sehen:

   1. Führen Sie den folgenden Befehl aus und notieren Sie sich die neueste Version des Add-ons:

      ```
      aws eks describe-addon-versions --addon-name aws-secrets-store-csi-driver-provider
      ```

   1. Führen Sie den folgenden Befehl aus, um das Konfigurationsschema des Add-ons anzuzeigen, und `<version>` ersetzen Sie es durch die Version aus dem vorherigen Schritt:

      ```
      aws eks describe-addon-configuration --addon-name aws-secrets-store-csi-driver-provider --addon-version <version>
      ```

**Installieren Sie ASCP mit Helm wie folgt:**

1. Um sicherzustellen, dass das Repository auf die neuesten Diagramme verweist, verwenden Sie `helm repo update.`.

1. Installieren Sie das Diagramm. Das Folgende ist ein Beispiel für den `helm install` Befehl:

   ```
   helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
   ```

   1. Um einen FIPS-Endpunkt zu verwenden, fügen Sie das folgende Flag hinzu: `--set useFipsEndpoint=true`.

   1. Um die Drosselung zu konfigurieren, fügen Sie das folgende Flag hinzu: `--set-json 'k8sThrottlingParams={"qps": "number of queries per second", "burst": "number of queries per second"}'`.

   1. Wenn der Secrets Store CSI Driver bereits auf Ihrem Cluster installiert ist, fügen Sie das folgende Flag hinzu:`--set secrets-store-csi-driver.install=false`. Dadurch wird die Installation des Secrets Store CSI-Treibers als Abhängigkeit übersprungen.

**Installieren Sie ASCP mit YAML im Repository wie folgt:**
+ Verwenden Sie die folgenden Befehle.

  ```
  helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
  ```

## Überprüfen der Installationen
<a name="verify-ascp-installations"></a>

Gehen Sie folgendermaßen vor, um die Installationen Ihres EKS-Clusters, des Secrets Store CSI-Treibers und des ASCP-Plug-ins zu überprüfen:

1. Den EKS-Cluster überprüfen:

   ```
   eksctl get cluster --name clusterName
   ```

   Dieser Befehl muss Informationen zu Ihrem Cluster zurückgeben.

1. Die Secrets-Store-CSI-Treiberinstallation überprüfen:

   ```
   kubectl get pods -n kube-system -l app=secrets-store-csi-driver
   ```

   Sie sollten ausgeführte Pods mit Namen wie `csi-secrets-store-secrets-store-csi-driver-xxx` sehen.

1. Die ASCP-Plugin-Installation überprüfen:

------
#### [ YAML installation ]

   ```
   $ kubectl get pods -n kube-system -l app=csi-secrets-store-provider-aws
   ```

   Beispielausgabe:

   ```
   NAME                                     READY   STATUS    RESTARTS   AGE
   csi-secrets-store-provider-aws-12345      1/1     Running   0          2m
   ```

------
#### [ Helm installation ]

   ```
   $  kubectl get pods -n kube-system -l app=secrets-store-csi-driver-provider-aws
   ```

   Beispielausgabe:

   ```
   NAME                                              READY   STATUS    RESTARTS   AGE
   secrets-provider-aws-secrets-store-csi-driver-provider-67890       1/1     Running   0          2m
   ```

------

   Sie sollten Pods im Status `Running` sehen.

Wenn nach dem Ausführen dieser Befehle alles korrekt eingerichtet ist, sollten alle Komponenten fehlerfrei ausgeführt werden. Wenn Sie auf Probleme stoßen, müssen Sie diese möglicherweise beheben, indem Sie die Protokolle der jeweiligen Pods überprüfen, bei denen Probleme auftreten.

## Fehlerbehebung
<a name="troubleshooting"></a>

1. Führen Sie folgenden Befehl aus, um die Protokolle des ASCP-Anbieters zu überprüfen:

   ```
   kubectl logs -n kube-system -l app=csi-secrets-store-provider-aws
   ```

1. Überprüfen Sie den Status aller Pods im `kube-system` Namespace:

   ```
   kubectl -n kube-system get pods
   ```

   ```
   kubectl -n kube-system logs pod/PODID
   ```

   Alle Pods, die sich auf den CSI-Treiber und ASCP beziehen, sollten sich im Status „In Ausführung“ befinden.

1. Die Version des CSI-Treibers überprüfen:

   ```
   kubectl get csidriver secrets-store.csi.k8s.io -o yaml
   ```

   Dieser Befehl muss Informationen zu dem installierten CSI-Treiber zurückgeben.

## Weitere Ressourcen
<a name="additional-resources"></a>

Weitere Informationen zur Verwendung von ASCP mit Amazon EKS finden Sie in den folgenden Ressourcen:
+ [Verwenden von Pod Identity mit Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets Store CSI-Treiber aktiviert GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Verwenden Sie AWS Secrets and Configuration Provider CSI mit Pod Identity für Amazon EKS
<a name="ascp-pod-identity-integration"></a>

Die AWS Secrets and Configuration Provider-Integration mit dem Pod Identity Agent für Amazon Elastic Kubernetes Service bietet verbesserte Sicherheit, vereinfachte Konfiguration und verbesserte Leistung für Anwendungen, die auf Amazon EKS ausgeführt werden. Pod Identity vereinfacht die IAM-Authentifizierung für Amazon EKS beim Abrufen von Geheimnissen aus Secrets Manager oder Parametern aus dem AWS Systems Manager Parameter Store.

Amazon EKS Pod Identity optimiert die Konfiguration von IAM-Berechtigungen für Kubernetes-Anwendungen, da Berechtigungen direkt über Amazon-EKS-Schnittstellen eingerichtet werden können. Das reduziert die Anzahl der Schritte und der Wechsel zwischen Amazon EKS und IAM-Services entfällt. Pod Identity ermöglicht die Verwendung einer einzigen IAM-Rolle in mehreren Clustern, ohne dass die Vertrauensrichtlinien aktualisiert werden müssen, und unterstützt [Rollensitzungs-Tags](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags) für eine detailliertere Zugriffskontrolle. Dieser Ansatz vereinfacht nicht nur die Richtlinienverwaltung, indem er die rollenübergreifende Wiederverwendung von Berechtigungsrichtlinien ermöglicht, sondern erhöht auch die Sicherheit, indem der Zugriff auf AWS Ressourcen auf der Grundlage übereinstimmender Tags ermöglicht wird.

## Funktionsweise
<a name="how-it-works"></a>

1. Pod Identity weist dem Pod eine IAM-Rolle zu.

1. ASCP verwendet diese Rolle zur Authentifizierung bei. AWS-Services

1. Falls autorisiert, ruft ASCP die angeforderten Geheimnisse ab und stellt sie dem Pod zur Verfügung.

Weitere Informationen finden Sie im *Benutzerhandbuch für Amazon EKS* unter [Funktionsweise von Amazon EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html).

## Voraussetzungen
<a name="prerequisites"></a>

**Wichtig**  
Pod Identity wird nur für Amazon EKS in der Cloud unterstützt. Es wird nicht für [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/), [Red Hat OpenShift Service in AWS](https://aws.amazon.com/rosa/) oder selbstverwaltete Kubernetes-Cluster auf Amazon-EC2-Instances unterstützt.
+ Amazon-EKS-Cluster (Version 1.24 oder höher)
+ Zugriff auf AWS CLI einen Amazon EKS-Cluster über `kubectl`
+ Zugriff auf zwei AWS-Konten (für kontoübergreifenden Zugriff)

## Installieren des Pod-Identity-Agents für Amazon EKS
<a name="install-pod-identity-agent"></a>

Um Pod Identity in Ihrem Cluster zu verwenden, müssen Sie das Add-on „Amazon EKS Pod Identity Agent“ installieren.

**Installieren des Pod-Identity-Agents**
+ Installieren Sie das Pod Identity Agent-Add-on auf Ihrem Cluster:

  ```
  eksctl create addon \
    --name eks-pod-identity-agent \
    --cluster clusterName \
    --region region
  ```

## Einrichten von ASCP mit Pod Identity
<a name="pod-identity-setup"></a>

1. Erstellen Sie eine Berechtigungsrichtlinie, die Zugriff auf die Geheimnisse gewährt`secretsmanager:GetSecretValue`, auf die der Pod zugreifen muss. `secretsmanager:DescribeSecret` Eine Beispielrichtlinie finden Sie unter [Beispiel: Erlaubnis, einzelne Geheimnisse zu lesen und zu beschreiben](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Erstellen Sie eine IAM-Rolle, die vom Amazon-EKS-Service-Prinzipalen für Pod Identity übernommen werden kann:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "pods.eks.amazonaws.com"
           },
           "Action": [
             "sts:AssumeRole",
             "sts:TagSession"
           ]
         }
       ]
     }
   ```

------

   Hängen Sie die IAM-Richtlinie an die Rolle an:

   ```
   aws iam attach-role-policy \
     --role-name MY_ROLE \
     --policy-arn POLICY_ARN
   ```

1. Erstellen Sie eine Pod-Identity-Zuordnung. Ein Beispiel finden Sie unter [Erstellen einer Pod-Identity-Zuordnung](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create) im *Benutzerhandbuch für Amazon EKS*

1. Erstellen Sie das`SecretProviderClass`, das festlegt, welche Geheimnisse im Pod bereitgestellt werden sollen:

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml
   ```

   Der Hauptunterschied in `SecretProviderClass` zwischen IRSA und Pod Identity ist der optionale Parameter `usePodIdentity`. Es ist ein optionales Feld, das den Authentifizierungsansatz bestimmt. Wenn nicht angegeben, wird standardmäßig IAM Roles for Service Accounts (IRSA) verwendet.
   + Verwenden Sie einen der folgenden Werte, um EKS Pod Identity zu verwenden: `"true", "True", "TRUE", "t", "T"`.
   + Wenn Sie explizit IRSA nutzen möchten, verwenden Sie einen der folgenden Werte: `"false", "False", "FALSE", "f", or "F"`.

1. Stellen Sie den Pod, der die Secrets mountet, bereit unter`/mnt/secrets-store`:

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
   ```

1. Wenn Sie einen privaten Amazon EKS-Cluster verwenden, stellen Sie sicher, dass die VPC, in der sich der Cluster befindet, über einen AWS STS Endpunkt verfügt. Weitere Informationen zum Erstellen eines Endpunktes finden Sie unter [Schnittstellen-VPC-Endpunkte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) im *Benutzerhandbuch für AWS Identity and Access Management *.

### Überprüfen des Secret-Mountings
<a name="verify-secret-mount"></a>

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der geheime Schlüssel ordnungsgemäß bereitgestellt wurde:

```
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MySecret
```

**So richten Sie Amazon EKS Pod Identity für den Zugriff auf Secrets Manager ein**

1. Erstellen Sie eine Berechtigungsrichtlinie, die Zugriff auf die Geheimnisse gewährt`secretsmanager:GetSecretValue`, auf die der Pod zugreifen muss. `secretsmanager:DescribeSecret` Eine Beispielrichtlinie finden Sie unter [Beispiel: Erlaubnis, einzelne Geheimnisse zu lesen und zu beschreiben](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Erstellen Sie ein Geheimnis in Secrets Manager, falls Sie noch keines haben.

## Fehlerbehebung
<a name="integrating_aspc_pod_trouble"></a>

Sie können die meisten Fehler anzeigen, indem Sie die Pod-Bereitstellung beschreiben.

**Fehlermeldungen für Ihren Container anzeigen**

1. Rufen Sie mit dem folgenden Befehl eine Liste der Pod-Namen ab. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie `-n NAMESPACE`.

   ```
   kubectl get pods
   ```

1. Um den Pod zu beschreiben, *PODID* verwenden Sie im folgenden Befehl die Pod-ID der Pods, die Sie im vorherigen Schritt gefunden haben. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie `-n NAMESPACE`.

   ```
   kubectl describe pod/PODID
   ```

**Fehler für den ASCP anzeigen**
+ Um weitere Informationen in den Anbieterprotokollen zu finden, *PODID* verwenden Sie im folgenden Befehl die ID des Pods *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs pod/PODID
  ```

# Verwenden Sie AWS Secrets and Configuration Provider CSI mit IAM-Rollen für Dienstkonten (IRSA)
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [Voraussetzungen](#prerequisites)
+ [Einrichten der Zugriffssteuerung](#integrating_ascp_irsa_access)
+ [Identifizieren der Secrets, die gemountet werden sollen](#integrating_ascp_irsa_mount)
+ [Fehlerbehebung](#integrating_ascp_irsa_trouble)

## Voraussetzungen
<a name="prerequisites"></a>
+ Amazon-EKS-Cluster (Version 1.17 oder höher)
+ Zugriff auf AWS CLI einen Amazon EKS-Cluster über `kubectl`

## Einrichten der Zugriffssteuerung
<a name="integrating_ascp_irsa_access"></a>

ASCP ruft die Amazon-EKS-Pod-Identität ab und tauscht sie gegen eine IAM-Rolle. Sie legen in einer IAM-Richtlinie Berechtigungen für diese IAM-Rolle fest. Wenn das ASCP die IAM-Rolle übernimmt, erhält es Zugriff auf die von Ihnen autorisierten Geheimnisse. Andere Container können nur auf die Secrets zugreifen, wenn Sie diese auch der IAM-Rolle zuordnen. 

**So gewähren Sie Ihrem Amazon EKS Pod Zugriff auf Geheimnisse in Secrets Manager**

1. Erstellen Sie eine Berechtigungsrichtlinie, die Zugriff auf die Geheimnisse gewährt`secretsmanager:GetSecretValue`, auf die der Pod zugreifen muss. `secretsmanager:DescribeSecret` Eine Beispielrichtlinie finden Sie unter [Beispiel: Erlaubnis, einzelne Geheimnisse zu lesen und zu beschreiben](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Erstellen Sie einen IAM OpenID Connect (OIDC)-Anbieter für den Cluster, wenn Sie noch keinen haben. Weitere Informationen finden Sie unter [Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) im *Benutzerhandbuch für Amazon EKS*.

1. Erstellen Sie eine [IAM-Rolle für das Servicekonto](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) und fügen Sie die Richtlinie an. Weitere Informationen finden Sie unter [Erstellen einer IAM-Rolle für ein Servicekonto](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) im *Benutzerhandbuch für Amazon EKS*.

1. Wenn Sie einen privaten Amazon EKS-Cluster verwenden, stellen Sie sicher, dass die VPC, in der sich der Cluster befindet, über einen AWS STS Endpunkt verfügt. Weitere Informationen zum Erstellen eines Endpunktes finden Sie unter [Schnittstellen-VPC-Endpunkte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) im *Benutzerhandbuch für AWS Identity and Access Management *.

## Identifizieren der Secrets, die gemountet werden sollen
<a name="integrating_ascp_irsa_mount"></a>

Um zu bestimmen, welche Secrets der ASCP in Amazon EKS als Dateien im Dateisystem bereitstellt, erstellen Sie eine [SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass)-YAML-Datei. Die `SecretProviderClass` listet die Secrets auf, die gemountet werden sollen, und den Dateinamen, unter dem sie bereitgestellt werden sollen. `SecretProviderClass` muss sich im gleichen Namespace wie der Amazon-EKS-Pod befinden, auf den verwiesen wird.

### Hängen Sie die Secrets als Dateien ein
<a name="mount-secrets"></a>

[Die folgenden Anweisungen zeigen, wie Sie Geheimnisse mithilfe der YAML-Beispieldateien .yaml und [ExampleSecretProviderClass.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml) als Dateien einhängen. ExampleDeployment](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml)

**So hängen Sie Geheimnisse in Amazon EKS ein**

1. Wenden Sie die `SecretProviderClass` auf den Pod an:

   ```
   kubectl apply -f ExampleSecretProviderClass.yaml
   ```

1. Stellen Sie den Pod bereit:

   ```
   kubectl apply -f ExampleDeployment.yaml
   ```

1. ASCP mountet die Dateien.

## Fehlerbehebung
<a name="integrating_ascp_irsa_trouble"></a>

Sie können die meisten Fehler anzeigen, indem Sie die Pod-Bereitstellung beschreiben. 

**Fehlermeldungen für Ihren Container anzeigen**

1. Rufen Sie mit dem folgenden Befehl eine Liste der Pod-Namen ab. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie `-n nameSpace`.

   ```
   kubectl get pods
   ```

1. Um den Pod zu beschreiben, *podId* verwenden Sie im folgenden Befehl die Pod-ID der Pods, die Sie im vorherigen Schritt gefunden haben. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie `-n nameSpace`.

   ```
   kubectl describe pod/podId
   ```

**Fehler für den ASCP anzeigen**
+ Um weitere Informationen in den Anbieterprotokollen zu finden, *podId* verwenden Sie im folgenden Befehl die ID des Pods *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs Pod/podId
  ```
+ 

**Überprüfen Sie, ob die `SecretProviderClass`-CRD installiert wurde:**

  ```
  kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
  ```

  Dieser Befehl muss Informationen zur benutzerdefinierten Ressourcendefinition von `SecretProviderClass` zurückgeben.
+ 

**Stellen Sie sicher, dass das SecretProviderClass Objekt erstellt wurde.**

  ```
  kubectl get secretproviderclass SecretProviderClassName -o yaml
  ```

# AWS Codebeispiele für Secrets und Configuration Provider
<a name="ascp-examples"></a>

## Beispiele für ASCP-Authentifizierung und Zugriffskontrolle
<a name="ascp-auth-access-examples"></a>

### Beispiel: IAM-Richtlinie, die dem Service Amazon EKS Pod Identity (pods.eks.amazonaws.com) ermöglicht, die Rolle zu übernehmen und die Sitzung zu taggen:
<a name="w2aac19c17c18b5b3"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

------

## SecretProviderClass
<a name="ascp-examples-secretproviderclass"></a>

Sie verwenden YAML, um zu beschreiben, welche Secrets mithilfe des ASCP in Amazon EKS gemountet werden sollen. Beispiele finden Sie unter [SecretProviderClass Verwendung](#ascp-scenarios-secretproviderclass).

### SecretProviderClass YAML-Struktur
<a name="w2aac19c17c18c25b5"></a>

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
   name: name
spec:
  provider: aws
  parameters:
    region:
    failoverRegion:
    pathTranslation:
    usePodIdentity:
    preferredAddressType:
    objects:
```

Das Feld Parameter enthält die Details der Mounting-Anfrage:

**Region**  
(Optional) Das AWS-Region Geheimnis. Wenn Sie dieses Feld nicht verwenden, sucht der ASCP die Region aus der Anmerkung auf dem Knoten. Diese Suche steigert den Overhead von Mounting-Anfragen. Daher wird empfohlen, die Region für Cluster mit einer großen Anzahl von Pods anzugeben.  
Wenn Sie auch `failoverRegion` angeben, versucht der ASCP, das Secret aus beiden Regionen abzurufen. Wenn eine Region einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, mountet der ASCP keines der Secrets. Wenn das Secret erfolgreich von `region` abgerufen wurde, mountet der ASCP diesen Secret-Wert. Wenn das Secret nicht erfolgreich von `region` abgerufen wurde, aber efolgreich von `failoverRegion` abgerufen werden konnte, mountet der ASCP diesen Secret-Wert.

**failoverRegion**  
(Optional) Wenn Sie dieses Feld angeben, versucht der ASCP, das Secret aus den Regionen abzurufen, die in `region` und diesem Feld definiert sind. Wenn eine Region einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, mountet der ASCP keines der Secrets. Wenn das Secret erfolgreich von `region` abgerufen wurde, mountet der ASCP diesen Secret-Wert. Wenn das Secret nicht erfolgreich von `region` abgerufen wurde, aber efolgreich von `failoverRegion` abgerufen werden konnte, mountet der ASCP diesen Secret-Wert. Ein Beispiel für die Nutzung dieses Felds finden Sie unter [Geheimes Failover für mehrere Regionen](#multi-region-failover).

**pathTranslation (Pfadangabe)**  
(Optional) Ein einzelnes Ersetzungszeichen, das verwendet werden soll, wenn der Dateiname in Amazon EKS das Pfadtrennzeichen enthält, z. B. Schrägstrich (/) unter Linux. ASCP kann keine gemountete Datei erstellen, die ein Pfadtrennzeichen enthält. Stattdessen ersetzt ASCP das Pfadtrennzeichen durch ein anderes Zeichen. Wenn Sie dieses Feld nicht verwenden, ist das Ersatzzeichen ein Unterstrich (\$1), d. h. `My/Path/Secret` wird als `My_Path_Secret` gemountet.   
Um die Zeichenersetzung zu verhindern, geben Sie die Zeichenfolge `False` ein.

**usePodIdentity**  
(Optional) Legt den Authentifizierungsansatz fest. Wenn nicht angegeben, wird standardmäßig IAM Roles for Service Accounts (IRSA) verwendet.  
+ Verwenden Sie einen der folgenden Werte, um EKS Pod Identity zu verwenden: `"true"`, `"True"`, `"TRUE"`, `"t"` oder `"T"`.
+ Wenn Sie explizit IRSA nutzen möchten, verwenden Sie einen der folgenden Werte: `"false"`, `"False"`, `"FALSE"`, `"f"` oder `"F"`.

**preferredAddressType**  
(Optional) Gibt den bevorzugten IP-Adresstyp für die Pod-Identity-Agent-Endpunktkommunikation an. Das Feld ist nur bei Verwendung der EKS-Pod-Identity-Funktion relevant und wird ignoriert, wenn IAM-Roles for Service Accounts verwendet wird. Bei den Werten wird zwischen Groß- und Kleinschreibung unterschieden. Folgende sind gültige Werte:  
+ `"ipv4"`, `"IPv4"` „, oder `"IPV4"` — Die Verwendung des Pod Identity IPv4 Agent-Endpunkts erzwingen
+ `"ipv6"`,`"IPv6"`, oder `"IPV6"` — Erzwingen Sie die Verwendung des Pod Identity IPv6 Agent-Endpunkts
+ nicht spezifiziert — auto Endpunktauswahl verwenden, zuerst den IPv4 Endpunkt ausprobieren und bei einem Fehler auf den IPv6 Endpunkt IPv4 zurückgreifen

**objects (Objekte)**  
Eine Zeichenfolge, die eine YAML-Deklaration der bereitzustellenden Secrets enthält. Wir empfehlen, eine mehrzeilige YAML-Zeichenfolge oder ein Pipe-Zeichen (\$1) zu verwenden.    
**objectName (Objektname)**  
Erforderlich Gibt den Namen des Geheimnisses oder Parameters an, der abgerufen werden soll. Für Secrets Manager ist dies der Parameter [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters) und kann entweder der Anzeigename oder der vollständige ARN des Secrets sein. Für SSM Parameter Store ist dies [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters)der Parameter und kann entweder der Name oder der vollständige ARN des Parameters sein.  
**objectType**  
Erforderlich, wenn Sie keinen Secrets Manager ARN für `objectName` verwenden. Kann `secretsmanager` oder `ssmparameter` sein.   
**objectAlias (Objektalias)**  
(Optional) Der Dateiname des Secrets im Amazon-EKS-Pod. Wenn Sie dieses Feld nicht angeben, wird `objectName` als Dateiname angezeigt.  
**Dateiberechtigung**  
(Optional) Die vierstellige Oktalzeichenfolge, die die Dateiberechtigung zum Einhängen von Secret angibt. Wenn Sie dieses Feld nicht angeben, wird standardmäßig verwendet. `"0644"`   
**objectVersion (Objektversion)**  
(Optional) Die Versions-ID des Secrets. Nicht empfohlen, da Sie jedes Mal, wenn Sie das Secret aktualisieren, die Versions-ID aktualisieren müssen. Standardmäßig wird die neueste Version verwendet. Wenn Sie eine `failoverRegion` angeben, stellt dieses Feld den primären `objectVersion` dar.  
**objectVersionLabel**  
(Optional) Der Alias für die Version. Die Standardversion ist die neueste Version AWSCURRENT. Weitere Informationen finden Sie unter [Geheime Versionen](whats-in-a-secret.md#term_version). Wenn Sie eine `failoverRegion` angeben, stellt dieses Feld den primären `objectVersionLabel` dar.  
**jmesPath (jmes-Pfad)**  
(Optional) Eine Zuordnung der Schlüssel im Secret zu den Dateien, die in Amazon EKS bereitgestellt werden sollen. Um dieses Feld zu verwenden, muss Ihr Secret-Wert im JSON-Format vorliegen. Wenn Sie dieses Feld verwenden, müssen Sie die Unterfelder `path` und `objectAlias` angeben.    
**Pfad**  
Ein Schlüssel aus einem Schlüssel-Wert-Paar im JSON des geheimen Werts. Wenn das Feld einen Bindestrich enthält, verwenden Sie einfache Anführungszeichen als Escape-Zeichen. Beispiel: `path: '"hyphenated-path"'`  
**objectAlias**  
Der Dateiname, der im Amazon-EKS-Pod gemountet werden soll. Wenn das Feld einen Bindestrich enthält, verwenden Sie einfache Anführungszeichen als Escape-Zeichen. Beispiel: `objectAlias: '"hyphenated-alias"'`  
**Datei/Berechtigung**  
(Optional) Die vierstellige Oktalzeichenfolge, die die Dateiberechtigung zum Einhängen von Secret angibt. Wenn Sie dieses Feld nicht angeben, wird standardmäßig die Dateiberechtigung des übergeordneten Objekts verwendet.   
**failoverObject**  
(Optional) Wenn Sie dieses Feld angeben, versucht der ASCP, sowohl das im primären `objectName` angegebene Secret als auch das im `failoverObject`-`objectName`-Unterfeld angegebene Secret abzurufen. Wenn eines von beiden einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, mountet der ASCP keines der Secrets. Wenn das Secret erfolgreich vom primären `objectName` abgerufen wurde, mountet der ASCP diesen Secret-Wert. Wenn das Secret nicht erfolgreich vom primären `objectName` abgerufen wurde, aber efolgreich vom Failover-`objectName` abgerufen werden konnte, mountet der ASCP diesen Secret-Wert. Wenn Sie dieses Feld angeben, müssen Sie auch das Feld `objectAlias` angeben. Ein Beispiel für die Nutzung dieses Felds finden Sie unter [Failover auf ein anderes Geheimnis](#failover-secret).  
In der Regel verwenden Sie dieses Feld, wenn es sich bei dem Failover-Secret nicht um ein Replikat handelt. Ein Beispiel dazu, wie Sie ein Replikat angeben, finden Sie unter [Geheimes Failover für mehrere Regionen](#multi-region-failover).    
**objectName (Objektname)**  
Der Name oder vollständige ARN des Failover-Secrets. Wenn Sie einen ARN verwenden, muss die Region im ARN mit dem Feld `failoverRegion` übereinstimmen.  
**objectVersion (Objektversion)**  
(Optional) Die Versions-ID des Secrets. Muss mit der primären `objectVersion` übereinstimmen. Nicht empfohlen, da Sie jedes Mal, wenn Sie das Secret aktualisieren, die Versions-ID aktualisieren müssen. Standardmäßig wird die neueste Version verwendet.   
**objectVersionLabel**  
(Optional) Der Alias für die Version. Die Standardversion ist die neueste Version AWSCURRENT. Weitere Informationen finden Sie unter [Geheime Versionen](whats-in-a-secret.md#term_version). 

### Erstellen Sie eine SecretProviderClass Basiskonfiguration, um Secrets in Ihren Amazon EKS-Pods zu mounten.
<a name="w2aac19c17c18c25c11"></a>

------
#### [ Pod Identity ]

SecretProviderClass um ein Geheimnis im selben Amazon EKS-Cluster zu verwenden:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets-manager
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "mySecret"
        objectType: "secretsmanager"
    usePodIdentity: "true"
```

------
#### [ IRSA ]

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: deployment-aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "MySecret"
          objectType: "secretsmanager"
```

------

### SecretProviderClass Verwendung
<a name="ascp-scenarios-secretproviderclass"></a>

Verwenden Sie diese Beispiele, um SecretProviderClass Konfigurationen für verschiedene Szenarien zu erstellen.

#### Beispiel: Secrets nach Namen oder ARN mounten
<a name="mount-by-name-arn"></a>

Dieses Beispiel zeigt, wie drei verschiedene Arten von Geheimnissen bereitgestellt werden:
+ Ein durch den vollständigen ARN spezifiziertes Geheimnis
+ Ein namentlich angegebenes Geheimnis
+ Eine bestimmte Version eines Geheimnisses

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MySecret2-d4e5f6"
      - objectName: "MySecret3"
        objectType: "secretsmanager"
      - objectName: "MySecret4"
        objectType: "secretsmanager"
        objectVersionLabel: "AWSCURRENT"
```

#### Beispiel: Hängen Sie Schlüssel-Wert-Paare aus einem Secret ein
<a name="mount-key-value-pairs"></a>

Dieses Beispiel zeigt, wie bestimmte Schlüssel-Wert-Paare aus einem Geheimnis im JSON-Format gemountet werden:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MySecret-a1b2c3"
        jmesPath: 
            - path: username
              objectAlias: dbusername
            - path: password
              objectAlias: dbpassword
```

#### Beispiel: Einhängen von Geheimnissen mit Dateiberechtigungen
<a name="mount-by-permission"></a>

Dieses Beispiel zeigt, wie ein Secret mit einer bestimmten Dateiberechtigung bereitgestellt wird

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "mySecret"
        objectType: "secretsmanager"
        filePermission: "0600"
        jmesPath: 
            - path: username
              objectAlias: dbusername
              filePermission: "0400"
```

#### Beispiel: verschiedene Failover-Konfigurationen
<a name="failover-examples"></a>

Diese Beispiele zeigen, wie ein Failover für geheime Daten konfiguriert wird.

##### Geheimes Failover für mehrere Regionen
<a name="multi-region-failover"></a>

Dieses Beispiel zeigt, wie ein automatisches Failover für ein Geheimnis konfiguriert wird, das in mehreren Regionen repliziert wird:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "MySecret"
```

##### Failover auf ein anderes Geheimnis
<a name="failover-secret"></a>

Dieses Beispiel zeigt, wie ein Failover auf ein anderes Geheimnis (kein Replikat) konfiguriert wird:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-secrets
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "arn:aws:secretsmanager:us-east-1:777788889999:secret:MySecret-a1b2c3"
        objectAlias: "MyMountedSecret"
        failoverObject: 
          - objectName: "arn:aws:secretsmanager:us-east-2:777788889999:secret:MyFailoverSecret-d4e5f6"
```

## Weitere Ressourcen
<a name="additional-resources"></a>

Weitere Informationen zur Verwendung von ASCP mit Amazon EKS finden Sie in den folgenden Ressourcen:
+ [Verwenden von Pod Identity mit Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [Verwendung von AWS Geheimnissen und Configuration Provider](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_ascp_csi.html)
+ [AWS Secrets Store CSI-Treiber aktiviert GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)