

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AWS Secrets Manager Secretos de uso en Amazon Elastic Kubernetes Service
<a name="integrate_eks"></a>

Para mostrar los secretos de AWS Secrets Manager (ASCP) como archivos montados en los pods de Amazon EKS, puede utilizar el proveedor de AWS secretos y configuración del controlador CSI de Kubernetes Secrets Store. El ASCP funciona con Amazon Elastic Kubernetes Service 1.17\$1 y ejecuta un grupo de nodos de Amazon EC2. AWS Fargate no se admiten grupos de nodos. Con el ASCP, puede almacenar y administrar sus secretos en Secrets Manager y recuperarlos a través de sus cargas de trabajo que se ejecutan en Amazon EKS. Si su secreto contiene varios pares clave-valor en formato JSON, puede elegir cuáles montar en Amazon EKS. El ASCP utiliza sintaxis JMESPath para consultar los pares clave-valor en el secreto. El ASCP también funciona con parámetros del almacén de parámetros. El ASCP ofrece dos métodos de autenticación con Amazon EKS. El primer enfoque utiliza los roles de IAM para cuentas de servicio (IRSA). El segundo enfoque utiliza Pod Identities. Cada enfoque tiene sus beneficios y sus casos de uso.

## ASCP con roles de IAM para cuentas de servicio (IRSA)
<a name="csi_driver_overview"></a>

El ASCP con funciones de IAM para cuentas de servicio (IRSA) le permite montar datos secretos a AWS Secrets Manager partir de archivos en sus Amazon EKS Pods. Este enfoque es adecuado en los siguientes casos:
+ Si desea montar los secretos como archivos en los pods.
+ si está utilizando la versión 1.17 o una posterior de Amazon EKS con grupos de nodos de Amazon EC2,
+ Si desea recuperar pares clave-valor específicos de secretos con formato JSON.

Para obtener más información, consulte [Utilice el CSI del proveedor de AWS secretos y configuración con funciones de IAM para cuentas de servicio (IRSA)](integrating_ascp_irsa.md).

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

El método del ASCP con Pod Identity mejora la seguridad y simplifica la configuración para acceder a los secretos en Amazon EKS. Este enfoque resulta beneficioso en los siguientes casos:
+ cuando necesita una administración de permisos más detallada a nivel de pod,
+ si está utilizando la versión 1.24 o una posterior de Amazon EKS,
+ si desea mejorar el rendimiento y la escalabilidad.

Para obtener más información, consulte [Utilice el CSI del proveedor de AWS secretos y configuración con Pod Identity para Amazon EKS](ascp-pod-identity-integration.md).

## Cómo elegir el enfoque correcto
<a name="comparison"></a>

Tenga en cuenta los siguientes factores al decidir entre el ASCP con IRSA y el ASCP con Pod Identity:
+ Amazon EKSversion: Pod Identity requiere Amazon EKS 1.24\$1, mientras que el controlador CSI funciona con Amazon EKS 1.17\$1.
+ Requisitos de seguridad: Pod Identity ofrece un control más detallado a nivel de pod.
+ Rendimiento: por lo general, Pod Identity funciona mejor en entornos de gran escala.
+ Complejidad: Pod Identity simplifica la configuración al eliminar la necesidad de tener cuentas de servicio independientes.

Elija el método que mejor se adapte a sus requisitos específicos y al entorno de Amazon EKS.

# Cómo instalar ASCP para Amazon EKS
<a name="ascp-eks-installation"></a>

En esta sección se explica cómo instalar el proveedor de AWS secretos y configuración para Amazon EKS. Con ASCP, puede montar los secretos de Secrets Manager y los parámetros desde AWS Systems Manager archivos en Amazon EKS Pods.

## Requisitos previos
<a name="prerequisites"></a>
+ Un clúster de Amazon EKS
  + Versión 1.24 o posterior de Pod Identity
  + Versión 1.17 o posterior de IRSA
+ Los AWS CLI instalados y configurados
+ Kubectl debe estar instalado y configurado para su clúster de Amazon EKS
+ Helm (versión 3.0 o posterior)

## Cómo instalar y configurar el ASCP
<a name="integrating_csi_driver_install"></a>

El ASCP está disponible GitHub en el repositorio [secrets-store-csi-provider-aws](https://github.com/aws/secrets-store-csi-driver-provider-aws). El repositorio también contiene archivos YAML de ejemplo para crear y montar un secreto. 

Durante la instalación, puede configurar el ASCP para que utilice un punto de conexión FIPS. Para obtener una lista de puntos de enlace , consulte [AWS Secrets Manager puntos finales](asm_access.md#endpoints).

**Para instalar el ASCP como un complemento de EKS**

1. Instalar `eksctl` ([instrucciones de instalación](https://docs.aws.amazon.com/eks/latest/eksctl/installation.html))

1. Ejecute el siguiente comando para instalar el complemento con la [configuración predeterminada](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/charts/secrets-store-csi-driver-provider-aws/values.yaml):

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

   Si quieres configurar el complemento, ejecuta el siguiente comando de instalación en su lugar:

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

   El archivo de configuración puede ser un archivo YAML o JSON. Para ver el esquema de configuración del complemento:

   1. Ejecute el siguiente comando y anote la última versión del complemento:

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

   1. Ejecuta el siguiente comando para ver el esquema de configuración del complemento y `<version>` sustituirlo por la versión del paso anterior:

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

**Cómo instalar el ASCP mediante Helm**

1. Para asegurarse de que el repositorio apunte al gráfico más reciente, utilice `helm repo update.`.

1. Instale el gráfico. A continuación, se muestra un ejemplo del comando `helm install`:

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

   1. Para utilizar un punto de conexión FIPS, agregue el siguiente indicador: `--set useFipsEndpoint=true`.

   1. Para configurar la limitación, agregue el siguiente indicador: `--set-json 'k8sThrottlingParams={"qps": "number of queries per second", "burst": "number of queries per second"}'`.

   1. Si el controlador CSI del almacén de secretos ya está instalado en su clúster, agregue el siguiente indicador: `--set secrets-store-csi-driver.install=false`. Esto omitirá la instalación del controlador CSI del almacén de secretos como dependencia.

**Cómo instalarlo mediante el YAML del repositorio**
+ Use los siguientes comandos.

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

## Cómo verificar las instalaciones
<a name="verify-ascp-installations"></a>

Para verificar las instalaciones del clúster de EKS, el controlador CSI de Secrets Store y el complemento ASCP, siga estos pasos:

1. Verifique el clúster de EKS:

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

   Este comando debería devolver información sobre el clúster.

1. Verifique la instalación del controlador CSI de Secrets Store:

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

   Debería ver los pods en ejecución con nombres como `csi-secrets-store-secrets-store-csi-driver-xxx`.

1. Verifique la instalación del complemento ASCP:

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

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

   Ejemplo de código de salida:

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

   Ejemplo de código de salida:

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

------

   Debería ver los pods con el estado `Running`.

Después de ejecutar estos comandos, si todo está configurado correctamente, debería ver que todos los componentes se están ejecutando sin errores. Si encuentra algún problema, es posible que deba consultar los registros de los pods que contienen dicho problema para solucionarlo.

## Resolución de problemas
<a name="troubleshooting"></a>

1. Para verificar los registros del proveedor del ASCP, ejecute:

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

1. Verifique el estado de todos los pods en el espacio de nombres `kube-system`:

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

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

   Todos los pods relacionados con el controlador CSI y el ASCP deben tener el estado “En ejecución”.

1. Verifique la versión del controlador CSI:

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

   Este comando debería devolver información sobre el controlador CSI instalado.

## Recursos adicionales
<a name="additional-resources"></a>

Para obtener más información sobre el uso del ASCP con Amazon EKS, consulte los siguientes recursos:
+ [Using Pod Identity with Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets Store CSI está activado GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Utilice el CSI del proveedor de AWS secretos y configuración con Pod Identity para Amazon EKS
<a name="ascp-pod-identity-integration"></a>

La integración del proveedor de AWS secretos y configuración con el agente de identidad del pod para Amazon Elastic Kubernetes Service proporciona una seguridad mejorada, una configuración simplificada y un rendimiento mejorado para las aplicaciones que se ejecutan en Amazon EKS. Pod Identity simplifica la autenticación de IAM para Amazon EKS al recuperar secretos de Secrets Manager o parámetros de Parameter Store AWS Systems Manager .

Pod Identity de Amazon EKS agiliza el proceso de configuración de los permisos de IAM para las aplicaciones de Kubernetes, ya que permite que los permisos se configuren directamente a través de las interfaces de Amazon EKS, lo que reduce el número de pasos y elimina la necesidad de cambiar entre los servicios de Amazon EKS e IAM. Pod Identity permite usar un solo rol de IAM en varios clústeres sin actualizar las políticas de confianza y admite [etiquetas de sesión de rol](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags) para un control de acceso más detallado. Este enfoque no solo simplifica la administración de políticas al permitir la reutilización de las políticas de permisos en todas las funciones, sino que también mejora la seguridad al permitir el acceso a AWS los recursos en función de las etiquetas coincidentes.

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

1. Pod Identity asigna un rol de IAM al pod.

1. ASCP usa esta función para autenticarse con. Servicios de AWS

1. Si está autorizado, ASCP recupera los secretos solicitados y hace que estén disponibles para el pod.

Para obtener más información, consulte [Descripción del funcionamiento de Pod Identity de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html) en la *Guía del usuario de Amazon EKS*.

## Requisitos previos
<a name="prerequisites"></a>

**importante**  
Pod Identity solo es compatible con Amazon EKS en la nube. No es compatible con [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/), [Red Hat OpenShift Service en AWS](https://aws.amazon.com/rosa/) ni con los clústeres de Kubernetes autoadministrados en las instancias de Amazon EC2.
+ Clúster de Amazon EKS (versión 1.24 o posterior)
+ Acceso a un clúster AWS CLI de Amazon EKS a través de `kubectl`
+ Acceso a dos Cuentas de AWS (para acceso entre cuentas)

## Cómo instalar el agente de Pod Identity de Amazon EKS
<a name="install-pod-identity-agent"></a>

Para usar Pod Identity con el clúster, debe instalar el complemento del agente de Pod Identity de Amazon EKS.

**Cómo instalar el agente de Pod Identity**
+ Instale el complemento del agente de Pod Identity en el clúster:

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

## Cómo configurar el ASCP con Pod Identity
<a name="pod-identity-setup"></a>

1. Cree una política de permisos que conceda los permisos `secretsmanager:GetSecretValue` y `secretsmanager:DescribeSecret` a los secretos que el pod necesita acceder. Para ver una política de ejemplo, consulte [Ejemplo: Permiso para leer y describir secretos individuales](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Cree un rol de IAM que pueda ser asumido por la entidad principal de servicio de Amazon EKS para Pod Identity:

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

****  

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

------

   Adjunte la política de IAM al rol:

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

1. Cree una asociación de Pod Identity. Para ver un ejemplo, consulte [Creación de una asociación de Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create) en la *Guía del usuario de Amazon EKS*.

1. Cree `SecretProviderClass` que especifica qué secretos se deben montar en el pod:

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

   La diferencia clave en `SecretProviderClass` entre los roles de IAM para las cuentas de servicio (IRSA) y Pod Identity es el parámetro opcional `usePodIdentity`. Es un campo opcional que determina el enfoque de autenticación. Si no se especifica, se utilizarán los roles de IAM para IRSA de manera predeterminada.
   + Para usar Pod Identity de EKS, utilice cualquiera de estos valores: `"true", "True", "TRUE", "t", "T"`.
   + Para usar IRSA de forma explícita, establézcalo en cualquiera de estos valores: `"false", "False", "FALSE", "f", or "F"`.

1. Implemente el pod que monta los secretos en `/mnt/secrets-store`:

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

1. Si utiliza un clúster privado de Amazon EKS, asegúrese de que la VPC en la que se encuentra el clúster tenga un AWS STS punto de conexión. Para obtener más información sobre la creación de un punto de conexión, consulte [Puntos de conexión de VPC de tipo interfaz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) en la *Guía del usuario de AWS Identity and Access Management *.

### Cómo verificar el montaje del secreto
<a name="verify-secret-mount"></a>

Para verificar que el secreto se ha montado correctamente, ejecute el siguiente comando:

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

**Cómo configurar al Pod Identity de Amazon EKS para acceder a los secretos de Secrets Manager**

1. Cree una política de permisos que conceda los permisos `secretsmanager:GetSecretValue` y `secretsmanager:DescribeSecret` a los secretos que el pod necesita acceder. Para ver una política de ejemplo, consulte [Ejemplo: Permiso para leer y describir secretos individuales](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. En caso de no disponer de un secreto en Secrets Manager, debe crear uno.

## Solución de problemas
<a name="integrating_aspc_pod_trouble"></a>

Puede ver la mayoría de los errores si describe la implementación del pod.

**Cómo ver los mensajes de error del contenedor**

1. Obtenga una lista de nombres de pods con el siguiente comando. Si no está utilizando el espacio de nombres predeterminado, use `-n NAMESPACE`.

   ```
   kubectl get pods
   ```

1. Para describir el pod, en el siguiente comando, *PODID* usa el ID de pod de los pods que encontraste en el paso anterior. Si no está utilizando el espacio de nombres predeterminado, use `-n NAMESPACE`.

   ```
   kubectl describe pod/PODID
   ```

**Cómo ver los errores del ASCP**
+ Para obtener más información en los registros del proveedor, usa el siguiente comando para *PODID* usar el ID del pod *csi-secrets-store-provider-aws*.

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

# Utilice el CSI del proveedor de AWS secretos y configuración con funciones de IAM para cuentas de servicio (IRSA)
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [Requisitos previos](#prerequisites)
+ [Cómo configurar el control de acceso](#integrating_ascp_irsa_access)
+ [Identificar qué secretos hay que montar](#integrating_ascp_irsa_mount)
+ [Solución de problemas](#integrating_ascp_irsa_trouble)

## Requisitos previos
<a name="prerequisites"></a>
+ Clúster de Amazon EKS (versión 1.17 o posterior)
+ Acceso a un clúster AWS CLI de Amazon EKS a través de `kubectl`

## Cómo configurar el control de acceso
<a name="integrating_ascp_irsa_access"></a>

El ASCP recupera Pod Identity de Amazon EKS y la cambia por un rol de IAM. Los permisos se establecen en una política de IAM para ese rol de IAM. Cuando el ASCP asume el rol de IAM, le da acceso a los secretos autorizados por usted. Otros contenedores no pueden acceder a los secretos a menos que también los asocie con el rol de IAM. 

**Cómo concederle al pod de Amazon EKS acceso a los secretos de Secrets Manager**

1. Cree una política de permisos que conceda los permisos `secretsmanager:GetSecretValue` y `secretsmanager:DescribeSecret` a los secretos que el pod necesita acceder. Para ver una política de ejemplo, consulte [Ejemplo: Permiso para leer y describir secretos individuales](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe).

1. Cree un proveedor OpenID Connect (OIDC) de IAM para el clúster si todavía no tiene uno. Para obtener más información, consulte [Crear un proveedor OIDC de IAM para su clúster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) en la *Guía del usuario de Amazon EKS*.

1. Cree un [rol de IAM para la cuenta de servicio](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) y adjunte la política. Para obtener más información, consulte [Crear un rol de IAM para su cuenta de servicio](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) en la *Guía del usuario de Amazon EKS*.

1. Si utiliza un clúster privado de Amazon EKS, asegúrese de que la VPC en la que se encuentra el clúster tenga un AWS STS punto de conexión. Para obtener más información sobre la creación de un punto de conexión, consulte [Puntos de conexión de VPC de tipo interfaz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) en la *Guía del usuario de AWS Identity and Access Management *.

## Identificar qué secretos hay que montar
<a name="integrating_ascp_irsa_mount"></a>

Para determinar qué secretos debe montar el ASCP en Amazon EKS como archivos del sistema de archivos, se debe crear un archivo YAML [SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass). El `SecretProviderClass` contiene una lista de los secretos que hay que montar y el nombre de archivo con el que montarlos. El `SecretProviderClass` debe estar en el mismo espacio de nombres que el pod de Amazon EKS al que hace referencia.

### Montar los secretos como archivos
<a name="mount-secrets"></a>

[Las siguientes instrucciones muestran cómo montar secretos como archivos utilizando los archivos YAML de ejemplo .yaml y [ExampleSecretProviderClass.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml). ExampleDeployment](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml)

**Montar secretos en Amazon EKS**

1. Aplique el `SecretProviderClass` al pod:

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

1. Implemente el pod:

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

1. El ASCP monta los archivos.

## Solución de problemas
<a name="integrating_ascp_irsa_trouble"></a>

Puede ver la mayoría de los errores si describe la implementación del pod. 

**Cómo ver los mensajes de error del contenedor**

1. Obtenga una lista de nombres de pods con el siguiente comando. Si no está utilizando el espacio de nombres predeterminado, use `-n nameSpace`.

   ```
   kubectl get pods
   ```

1. Para describir el pod, en el siguiente comando, *podId* usa el ID de pod de los pods que encontraste en el paso anterior. Si no está utilizando el espacio de nombres predeterminado, use `-n nameSpace`.

   ```
   kubectl describe pod/podId
   ```

**Cómo ver los errores del ASCP**
+ Para obtener más información en los registros del proveedor, usa el siguiente comando para *podId* usar el ID del pod *csi-secrets-store-provider-aws*.

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

**Cómo comprobar que la definición de recurso personalizado (CRD) de `SecretProviderClass` está instalada:**

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

  Este comando debe devolver información acerca de la definición de recurso personalizado de `SecretProviderClass`.
+ 

**Compruebe que se haya creado el SecretProviderClass objeto.**

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

# AWS Ejemplos de código de proveedores de secretos y configuraciones
<a name="ascp-examples"></a>

## Ejemplos de autenticación y control de acceso del ASCP
<a name="ascp-auth-access-examples"></a>

### Ejemplo: política de IAM que permite que el servicio Pod Identity de Amazon EKS (pods.eks.amazonaws.com) asuma el rol y etiquete la sesión:
<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>

Se debe utilizar YAML para describir qué secretos hay que montar en Amazon EKS mediante el ASCP. Para ver ejemplos, consulte [SecretProviderClass uso](#ascp-scenarios-secretproviderclass).

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

Los campos de los parámetros contienen los detalles de la solicitud de montaje:

**region**  
(Opcional) El Región de AWS del secreto. Si no utiliza este campo, el ASCP busca la región en la anotación en el nodo. Esta búsqueda agrega una sobrecarga a las solicitudes de montaje, por lo que recomendamos que proporcione la región para los clústeres que utilizan una gran cantidad de pods.  
Si también se especifica `failoverRegion`, el ASCP intenta recuperar el secreto desde ambas regiones. Si alguna de estas regiones devuelve un error 4xx, por ejemplo por un problema de autenticación, el ASCP no monta ninguno de los secretos. Si el secreto se recupera correctamente desde `region`, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desde `region`, pero sí desde `failoverRegion`, el ASCP monta ese valor de secreto.

**failoverRegion**  
(Opcional) Si se incluye este campo, la ASCP intenta recuperar el secreto desde las regiones definidas en `region` y este campo. Si alguna de estas regiones devuelve un error 4xx, por ejemplo por un problema de autenticación, el ASCP no monta ninguno de los secretos. Si el secreto se recupera correctamente desde `region`, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desde `region`, pero sí desde `failoverRegion`, el ASCP monta ese valor de secreto. Para ver un ejemplo sobre cómo utilizar este campo, consulte [Conmutación por error de varias regiones](#multi-region-failover).

**pathTranslation**  
(Opcional) Un único carácter de sustitución para utilizarlo si el nombre del archivo de Amazon EKS contiene el carácter separador de ruta, por ejemplo la barra diagonal (/) en Linux. El ASCP no puede crear un archivo montado que contenga un carácter separador de ruta. En su lugar, el ASCP reemplaza el carácter separador de ruta por otro carácter. Si no se utiliza este campo, el carácter de reemplazo es el guion bajo (\$1), de modo que, por ejemplo, `My/Path/Secret` se monta como `My_Path_Secret`.   
Para evitar la sustitución de caracteres, ingrese la cadena `False`.

**usePodIdentity**  
(Opcional) Determine el enfoque de autenticación. Si no se especifica, se utilizarán los roles de IAM para las cuentas de servicio (IRSA) de manera predeterminada.  
+ Para usar Pod Identity de EKS, utilice cualquiera de estos valores: `"true"`, `"True"`, `"TRUE"`, `"t"` o `"T"`.
+ Para usar IRSA de forma explícita, establezca cualquiera de estos valores: `"false"`, `"False"`, `"FALSE"`, `"f"` o `"F"`.

**preferredAddressType**  
(Opcional) Especifica el tipo de dirección IP preferido para la comunicación del punto de conexión del agente de Pod Identity. El campo solo se aplica cuando se utiliza la característica Pod Identity de EKS y se ignora cuando se utilizan roles de IAM para cuentas de servicio. Los valores no distinguen entre mayúsculas y minúsculas. Los valores válidos son:  
+ `"ipv4"`, `"IPv4"` «o `"IPV4"` — Forzar el uso del IPv4 terminal Pod Identity Agent
+ `"ipv6"`,`"IPv6"`, o `"IPV6"` — Forzar el uso del IPv6 punto final del Pod Identity Agent
+ no especificado: utilice la selección automática del punto final, pruebe primero el IPv4 punto final y vuelva al IPv6 punto final si IPv4 falla

**objetos**  
Una cadena que contiene una declaración YAML de los secretos que se van a montar. Se recomienda utilizar una cadena de varias líneas de YAML o una barra vertical (\$1).    
**objectName**  
Obligatorio. Especifica el nombre del secreto o parámetro que se va a obtener. En el caso de Secrets Manager, este es el parámetro [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) y puede ser el nombre descriptivo o el ARN completo del secreto. En el caso de SSM Parameter Store, este es el [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) del parámetro y puede ser el nombre o el ARN completo del parámetro.  
**objectType**  
Es requerido si no utiliza un ARN de Secrets Manager para `objectName`. Puede ser `secretsmanager` o `ssmparameter`.   
**objectAlias**  
(Opcional) El nombre de archivo del secreto en el pod de Amazon EKS. Si no especifica este campo, el `objectName` aparece como nombre de archivo.  
**filePermission**  
(Opcional) Cadena octal de 4 dígitos que especifica el permiso de archivo con el que se debe montar el secreto. Si no especifica este campo, se aplicará un valor predeterminado de `"0644"`.   
**objectVersion**  
(Opcional) El ID de versión del secreto. No se recomienda, porque se debe actualizar el ID de versión cada vez que se actualice el secreto. Se utiliza la versión más reciente de forma predeterminada. Si se incluye `failoverRegion`, este campo representa el campo `objectVersion` principal.  
**objectVersionLabel**  
(Opcional) El alias de la versión. La versión predeterminada es la versión AWSCURRENT más reciente. Para obtener más información, consulte [Versiones de un secreto](whats-in-a-secret.md#term_version). Si se incluye `failoverRegion`, este campo representa el campo `objectVersionLabel` principal.  
**jmesPath**  
(Opcional) Un mapa de las claves en el secreto a los archivos que se van a montar en Amazon EKS. Para utilizar este campo, el valor secreto debe estar en formato JSON. Si utiliza este campo, debe incluir los subcampos `path` y `objectAlias`.    
**path**  
Una clave de un par clave-valor en el JSON del valor secreto. Si el campo contiene un guion, aplique escape con comillas simples, por ejemplo: `path: '"hyphenated-path"'`  
**objectAlias**  
Nombre de archivo que se va a montar en el pod de Amazon EKS. Si el campo contiene un guion, aplique escape con comillas simples, por ejemplo: `objectAlias: '"hyphenated-alias"'`  
**filePermission**  
(Opcional) Cadena octal de 4 dígitos que especifica el permiso de archivo con el que se debe montar el secreto. Si no especifica este campo, se utilizará por defecto el permiso de archivo del objeto principal.   
**failoverObject**  
(Opcional) Si se especifica este campo, el ASCP intenta recuperar tanto el secreto especificado en el campo `objectName` principal como el secreto especificado en el subcampo `failoverObject` `objectName`. Si alguno devuelve un error 4xx, por ejemplo por un problema de autenticación, el ASCP no monta ninguno de los secretos. Si el secreto se recupera correctamente desde el campo `objectName` principal, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desde el campo `objectName` principal, pero sí desde el `objectName` de conmutación por error, el ASCP monta ese valor de secreto. Si se incluye este campo, se debe incluir el campo `objectAlias`. Para ver un ejemplo sobre cómo utilizar este campo, consulte [Conmutación por error a un secreto diferente](#failover-secret).  
Este campo se suele utilizar cuando el secreto de conmutación por error no es una réplica. Para ver un ejemplo sobre cómo especificar una réplica, consulte [Conmutación por error de varias regiones](#multi-region-failover).    
**objectName**  
Nombre o ARN completo del secreto de conmutación por error. Si se utiliza un ARN, la región del ARN debe coincidir con el campo `failoverRegion`.  
**objectVersion**  
(Opcional) El ID de versión del secreto. Debe coincidir con el campo `objectVersion` principal. No se recomienda, porque se debe actualizar el ID de versión cada vez que se actualice el secreto. Se utiliza la versión más reciente de forma predeterminada.   
**objectVersionLabel**  
(Opcional) El alias de la versión. La versión predeterminada es la más reciente AWSCURRENT. Para obtener más información, consulte [Versiones de un secreto](whats-in-a-secret.md#term_version). 

### Crea una SecretProviderClass configuración básica para montar secretos en tus Amazon EKS Pods.
<a name="w2aac19c17c18c25c11"></a>

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

SecretProviderClass para usar un secreto en el mismo clúster de 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 uso
<a name="ascp-scenarios-secretproviderclass"></a>

Utilice estos ejemplos para crear SecretProviderClass configuraciones para diferentes escenarios.

#### Ejemplo: Montar secretos por nombre o ARN
<a name="mount-by-name-arn"></a>

En este ejemplo, se muestra cómo montar tres tipos diferentes de secretos:
+ Un secreto especificado por ARN completo
+ Un secreto especificado por nombre
+ Una versión específica de un secreto

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

#### Ejemplo: montar pares clave/valor de un secreto
<a name="mount-key-value-pairs"></a>

En este ejemplo, se muestra cómo montar pares clave-valor específicos a partir de un secreto con formato 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
```

#### Ejemplo: montar secretos mediante permiso de archivo
<a name="mount-by-permission"></a>

En este ejemplo, se muestra cómo montar un secreto con un permiso de archivo específico

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

#### Ejemplo: configuración de conmutación por error
<a name="failover-examples"></a>

En estos ejemplos, se muestra cómo configurar la conmutación por error para secretos.

##### Conmutación por error de varias regiones
<a name="multi-region-failover"></a>

En este ejemplo, se muestra cómo configurar la conmutación por error automática para un secreto replicado en varias regiones:

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

##### Conmutación por error a un secreto diferente
<a name="failover-secret"></a>

En este ejemplo, se muestra cómo configurar la conmutación por error a un secreto diferente (no a una réplica):

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

## Recursos adicionales
<a name="additional-resources"></a>

Para obtener más información sobre el uso del ASCP con Amazon EKS, consulte los siguientes recursos:
+ [Using Pod Identity with Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [Uso del proveedor de AWS secretos y configuraciones](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_ascp_csi.html)
+ [AWS Secrets Store CSI está activado GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)