

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS Exemples de code de secret et de fournisseur de configuration
<a name="ascp-examples"></a>

## Exemples d’authentification et de contrôle d’accès pour l’ASCP
<a name="ascp-auth-access-examples"></a>

### Exemple : politique IAM autorisant le service d’identité du pod Amazon EKS (pods.eks.amazonaws.com) à assumer le rôle et à baliser la session :
<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>

Vous utilisez YAML pour décrire les secrets à monter dans Amazon EKS à l'aide de l'ASCP. Pour obtenir des exemples, consultez [SecretProviderClass utilisation](#ascp-scenarios-secretproviderclass).

### SecretProviderClass Structure YAML
<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:
```

Le champ Paramètres contient les détails de la demande de montage :

**region**  
(Facultatif) Le nom Région AWS du secret. Si vous n'utilisez pas ce champ, ASCP va rechercher la région à partir de l'annotation sur le nœud. Comme cette recherche ajoute une surcharge aux demandes de montage, nous vous recommandons de fournir la région pour les clusters qui utilisent un grand nombre de pods.  
Si vous spécifiez également `failoverRegion`, l'ASCP essaie de récupérer le secret des deux régions. Si l'une des régions renvoie une erreur 4xx, notamment en raison d'un problème d'authentification, l'ASCP ne monte aucun secret. Si le secret est récupéré avec succès de `region`, l'ASCP monte cette valeur secrète. Si le secret n'est pas récupéré correctement de `region`, mais qu'il l'est avec succès de `failoverRegion`, l'ASCP monte cette valeur secrète.

**failoverRegion**  
(Facultatif) Si vous incluez ce champ, l'ASCP va essayer de récupérer le secret à partir des régions définies dans `region` et dans ce champ. Si l'une des régions renvoie une erreur 4xx, notamment en raison d'un problème d'authentification, l'ASCP ne monte aucun secret. Si le secret est récupéré avec succès de `region`, l'ASCP monte cette valeur secrète. Si le secret n'est pas récupéré correctement de `region`, mais qu'il l'est avec succès de `failoverRegion`, l'ASCP monte cette valeur secrète. Pour accéder à un exemple sur la façon de procéder, consultez [Basculement secret multirégional](#multi-region-failover).

**pathTranslation**  
(Facultatif) Un caractère de substitution unique à utiliser si le nom de fichier dans Amazon EKS contient un caractère séparateur de chemin, tel que la barre oblique (/) sur Linux. L'ASCP ne peut pas créer un fichier monté possédant un caractère de séparation de chemin. Par contre, l'ASCP va remplacer le caractère séparateur de chemin par un autre caractère. Si vous n'utilisez pas ce champ, la valeur par défaut est le trait de soulignement (\$1). Par exemple, `My/Path/Secret` se monte en tant que `My_Path_Secret`.   
Pour empêcher la substitution de caractères, entrez la chaîne `False`.

**usePodIdentity**  
(Facultatif) Détermine l’approche d’authentification. Lorsqu’il n’est pas spécifié, sa valeur par défaut est Rôles IAM pour les comptes de service (IRSA) (IRSA).  
+ Pour utiliser l’identité du pod EKS, utilisez l’une des valeurs suivantes : `"true"`", `"True"`, `"TRUE"`, `"t"` ou `"T"`.
+ Pour utiliser IRSA de manière explicite, définissez l’une des valeurs suivantes : `"false"`, `"False"`, `"FALSE"`, `"f"` ou `"F"`"=.

**preferredAddressType**  
(Facultatif) Spécifie le type d’adresse IP préféré pour les communications entre les points de terminaison de l’agent d’identité du pod. Le champ n’est applicable que lors de l’utilisation de la fonctionnalité d’identité du pod EKS et sera ignoré lors de l’utilisation des rôles IAM pour les comptes de service. Les valeurs ne sont pas sensibles à la casse. Les valeurs valides sont :  
+ `"ipv4"`, `"IPv4"` «, ou `"IPV4"` — Forcer l'utilisation du point de IPv4 terminaison Pod Identity Agent
+ `"ipv6"``"IPv6"`, ou `"IPV6"` — Forcer l'utilisation du point de IPv6 terminaison Pod Identity Agent
+ non spécifié — Utilisez la sélection automatique du point de terminaison, en essayant d'abord le point de IPv4 terminaison et en revenant au IPv6 point de terminaison en cas d' IPv4 échec

**objects**  
Chaîne contenant une déclaration YAML des secrets à monter. Nous vous recommandons d'utiliser une chaîne YAML multi-ligne ou un caractère pipe (\$1).    
**objectName**  
Obligatoire. Spécifie le nom du secret ou du paramètre à récupérer. Pour Secrets Manager, il s’agit du paramètre [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), et il peut s’agir du nom convivial ou de l’ARN complet du secret. Pour le magasin de paramètres SSM, il s'agit [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)du paramètre et il peut s'agir du nom ou de l'ARN complet du paramètre.  
**objectType**  
Obligatoire si vous n'utilisez pas d'ARN Secrets Manager pour `objectName`. Peut avoir la valeur `secretsmanager` ou `ssmparameter`.   
**objectAlias**  
(Facultatif) Nom de fichier du secret dans le pod Amazon EKS. Si vous ne spécifiez pas ce champ,`objectName` apparaît en tant que nom de fichier.  
**Autorisation du fichier**  
(Facultatif) Chaîne octale à 4 chiffres qui indique l'autorisation du fichier à utiliser pour le montage du secret. Si vous ne spécifiez pas ce champ, il sera défini par défaut sur`"0644"`.   
**objectVersion**  
(Facultatif) ID de version du secret. Déconseillé, car vous devez mettre à jour l'identifiant de la version à chaque fois que vous mettez le secret à jour. La version la plus récente est utilisée par défaut. Si vous incluez un `failoverRegion`, ce champ représente le champ principal `objectVersion`.  
**objectVersionLabel**  
(Facultatif) Alias de la version. La version par défaut est la plus récente AWSCURRENT. Pour de plus amples informations, veuillez consulter [Versions secrètes](whats-in-a-secret.md#term_version). Si vous incluez un `failoverRegion`, ce champ représente le champ principal `objectVersionLabel`.  
**jmesPath**  
(Facultatif) Carte des clés dans le secret des fichiers à monter dans Amazon EKS. Pour utiliser ce champ, votre valeur secrète doit être au format JSON. Si vous utilisez ce champ, vous devez inclure les sous-champs `path` et `objectAlias`.    
**path**  
Une clé issue d'une paire clé-valeur dans le JSON de la valeur secrète. Si le champ contient un trait d'union, utilisez des guillemets simples pour l'ignorer, par exemple : `path: '"hyphenated-path"'`  
**objectAlias**  
Le nom du fichier à monter dans le pod Amazon EKS. Si le champ contient un trait d'union, utilisez des guillemets simples pour l'ignorer, par exemple : `objectAlias: '"hyphenated-alias"'`  
**Autorisation du fichier**  
(Facultatif) Chaîne octale à 4 chiffres qui indique l'autorisation du fichier à utiliser pour le montage du secret. Si vous ne spécifiez pas ce champ, l'autorisation de fichier de l'objet parent sera utilisée par défaut.   
**failoverObject**  
(Facultatif) Si vous spécifiez ce champ, l'ASCP essaie de récupérer à la fois le secret spécifié dans le champ principal `objectName` et le secret spécifié dans le sous-champ `failoverObject` `objectName`. Si l'un ou l'autre renvoie une erreur 4xx, notamment pour un problème d'authentification, l'ASCP ne monte aucun secret. Si le secret est récupéré avec succès à partir du `objectName` principal, l'ASCP monte cette valeur secrète. Si le secret n'est pas récupéré correctement depuis le `objectName` principal, mais qu'il est récupéré correctement depuis le basculement `objectName`, l'ASCP monte cette valeur secrète. Si vous incluez ce champ, vous devez inclure le champ `objectAlias`. Pour accéder à un exemple sur la façon de procéder, consultez [Basculement vers un autre secret](#failover-secret).  
Vous allez généralement utiliser ce champ lorsque le secret de basculement n'est pas une réplique. Pour obtenir un exemple de spécification des capacités, consultez [Basculement secret multirégional](#multi-region-failover).    
**objectName**  
Nom ou ARN complet du secret de basculement. Si vous utilisez un ARN, la région de l'ARN doit correspondre au champ `failoverRegion`.  
**objectVersion**  
(Facultatif) ID de version du secret. Doit correspondre au principal `objectVersion`. Déconseillé, car vous devez mettre à jour l'identifiant de la version à chaque fois que vous mettez le secret à jour. La version la plus récente est utilisée par défaut.   
**objectVersionLabel**  
(Facultatif) Alias de la version. La version par défaut est la version la plus récente AWSCURRENT. Pour de plus amples informations, veuillez consulter [Versions secrètes](whats-in-a-secret.md#term_version). 

### Créez une SecretProviderClass configuration de base pour monter des secrets dans vos pods Amazon EKS.
<a name="w2aac19c17c18c25c11"></a>

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

SecretProviderClass pour utiliser un secret dans le même cluster Amazon EKS :

```
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 utilisation
<a name="ascp-scenarios-secretproviderclass"></a>

Utilisez ces exemples pour créer des SecretProviderClass configurations pour différents scénarios.

#### Exemple : Monter des secrets par nom ou ARN
<a name="mount-by-name-arn"></a>

Cet exemple montre comment monter trois types de secrets différents :
+ Un secret spécifié par un ARN complet
+ Un secret spécifié par son nom
+ Une version spécifique d'un secret

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

#### Exemple : monter des paires clé-valeur à partir d'un secret
<a name="mount-key-value-pairs"></a>

Cet exemple montre comment monter des paires clé-valeur spécifiques à partir d'un secret au format JSON :

```
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
```

#### Exemple : monter des secrets par autorisation de fichier
<a name="mount-by-permission"></a>

Cet exemple montre comment monter un secret avec une autorisation de fichier spécifique

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

#### Exemple : exemples de configuration de basculement
<a name="failover-examples"></a>

Ces exemples montrent comment configurer le basculement pour les secrets.

##### Basculement secret multirégional
<a name="multi-region-failover"></a>

Cet exemple montre comment configurer le basculement automatique pour un secret répliqué dans plusieurs régions :

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

##### Basculement vers un autre secret
<a name="failover-secret"></a>

Cet exemple montre comment configurer le basculement vers un autre secret (pas une réplique) :

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

## Ressources supplémentaires
<a name="additional-resources"></a>

Pour plus d’informations sur l’utilisation d’ASCP avec Amazon EKS, consultez les ressources suivantes :
+ [Utilisation de l’identité du pod avec Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [Utilisation des AWS secrets et du fournisseur de configuration](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_ascp_csi.html)
+ [AWS Pilote CSI Secrets Store activé GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)