Ejemplos de código del Proveedor de secretos y configuración de AWS
Ejemplos de autenticación y control de acceso del ASCP
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:
SecretProviderClass
Se debe utilizar YAML para describir qué secretos hay que montar en Amazon EKS mediante el ASCP. Para ver ejemplos, consulte Uso de SecretProviderClass.
Estructura YAML de SecretProviderClass
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:namespec: 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) La 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 desderegion, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desderegion, pero sí desdefailoverRegion, 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
regiony 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 desderegion, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desderegion, pero sí desdefailoverRegion, 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. - 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 (_), de modo que, por ejemplo,
My/Path/Secretse monta comoMy_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": fuerza el uso del punto de conexión IPv4 del agente de Pod Identity. -
"ipv6","IPv6"o"IPV6": fuerza el uso del punto de conexión IPv6 del agente de Pod Identity. -
no especificado: usa la selección automática del punto de conexión; prueba primero el punto de conexión IPv4 y recurre al punto de conexión IPv6 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 (|).
- 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
SecretIdy puede ser el nombre descriptivo o el ARN completo del secreto. En el caso de SSM Parameter Store, este es elNamedel 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 sersecretsmanagerossmparameter. - objectAlias
-
(Opcional) El nombre de archivo del secreto en el pod de Amazon EKS. Si no especifica este campo, el
objectNameaparece 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 campoobjectVersionprincipal. - objectVersionLabel
-
(Opcional) El alias de la versión. La versión predeterminada es la versión más reciente AWSCURRENT. Para obtener más información, consulte Versiones de un secreto. Si se incluye
failoverRegion, este campo representa el campoobjectVersionLabelprincipal. - 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
pathyobjectAlias.- 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
objectNameprincipal como el secreto especificado en el subcampofailoverObjectobjectName. 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 campoobjectNameprincipal, el ASCP monta ese valor de secreto. Si el secreto no se recupera correctamente desde el campoobjectNameprincipal, pero sí desde elobjectNamede conmutación por error, el ASCP monta ese valor de secreto. Si se incluye este campo, se debe incluir el campoobjectAlias. Para ver un ejemplo sobre cómo utilizar este campo, consulte Conmutación por error a un secreto diferente.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.
- 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
objectVersionprincipal. 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 versión más reciente AWSCURRENT. Para obtener más información, consulte Versiones de un secreto.
Cree una configuración básica de SecretProviderClass para montar los secretos en los pods de Amazon EKS.
Uso de SecretProviderClass
Utilice estos ejemplos para crear configuraciones de SecretProviderClass para diferentes situaciones.
Ejemplo: Montar secretos por nombre o ARN
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-secretsspec: 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
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-secretsspec: 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
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-secretsspec: 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
En estos ejemplos, se muestra cómo configurar la conmutación por error para secretos.
Conmutación por error de varias regiones
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-secretsspec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MySecret"
Conmutación por error a un secreto diferente
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
Para obtener más información sobre el uso del ASCP con Amazon EKS, consulte los siguientes recursos: