Exemplos de código do provedor de configuração e do AWS Secrets
Exemplos de autenticação do ASCP e controle de acesso
Exemplo: política do IAM que permite que o serviço da Identidade de Pods do Amazon EKS (pods.eks.amazonaws.com) assuma o perfil e marque a sessão:
SecretProviderClass
Você usa o YAML para descrever quais segredos devem ser montados no Amazon EKS usando o ASCP. Para obter exemplos, consulte Uso do SecretProviderClass.
Estrutura SecretProviderClass do YAML
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:namespec: provider: aws parameters: region: failoverRegion: pathTranslation: usePodIdentity: preferredAddressType: objects:
O campo de parâmetros contém os detalhes da solicitação de montagem:
- região
-
(Opcional) A Região da AWS do segredo. Se você não usar esse campo, o ASCP procurará a região na anotação no nó. Essa pesquisa adiciona sobrecarga às solicitações de montagem, portanto, recomendamos que você forneça a região para clusters que usam um grande número de pods.
Se você também especificar
failoverRegion, o ASCP tentará recuperar o segredo de ambas as regiões. Se qualquer uma das regiões retornar um erro 4xx (p. ex., para um problema de autenticação), o ASCP não montará nenhum segredo. Se o segredo for recuperado com êxito deregion, o ASCP montará o valor desse segredo. Se o segredo não for recuperado com êxito deregion, mas for recuperado com êxito defailoverRegion, o ASCP montará o valor desse segredo. - failoverRegion
-
(Opcional) Se você incluir esse campo, o ASCP tentará recuperar o segredo das regiões definidas em
regione nesse campo. Se qualquer uma das regiões retornar um erro 4xx (p. ex., para um problema de autenticação), o ASCP não montará nenhum segredo. Se o segredo for recuperado com êxito deregion, o ASCP montará o valor desse segredo. Se o segredo não for recuperado com êxito deregion, mas for recuperado com êxito defailoverRegion, o ASCP montará o valor desse segredo. Para obter um exemplo de como usar esse campo, consulte Failover multirregiões. - pathTranslation
-
(Opcional) Um só caractere de substituição para usar se o nome de arquivo no Amazon EKS vá conter o caractere separador de caminho, como barra (/) no Linux. O ASCP não poderá criar um arquivo montado que contenha um caractere separador de caminho. Em vez disso, o ASCP substituirá o caractere separador de caminho por outro caractere. Se você não usar esse campo, o caractere substituto será um sublinhado (_), portanto, por exemplo,
My/Path/Secretserá montado comoMy_Path_Secret.Para impedir a substituição de caracteres, digite a string
False. - usePodIdentity
-
(Opcional) Determina a abordagem de autenticação. Quando não especificado, o padrão é Perfis do IAM para contas de serviço (IRSA).
-
Para usar a Identidade de Pods do EKS, use qualquer um destes valores:
"true","True","TRUE","t"ou"T". -
Para usar explicitamente o IRSA, defina qualquer um destes valores:
"false","False","FALSE","f"ou"F""=.
-
- preferredAddressType
-
(Opcional) Especifica o tipo de endereço IP preferencial para comunicação de endpoints do agente da Identidade de Pods. O campo só será aplicável ao usar o recurso de Identidade de Pods do EKS, e será ignorado ao usar perfis do IAM para contas de serviço. Os valores não diferenciam maiúsculas de minúsculas. Os valores válidos são:
-
"ipv4","IPv4"ou"IPV4": force o uso do endpoint IPv4 do agente da Identidade de Pods -
"ipv6","IPv6"ou"IPV6": force o uso do endpoint IPv6 do agente da Identidade de Pods -
não especificado: use a seleção automática de endpoints, testando primeiro o endpoint IPv4 e voltando para o endpoint IPv6, se o IPv4 falhar
-
- objects
-
Uma string contendo uma declaração do YAML dos segredos a serem montados. Recomendamos o uso de uma string com várias linhas ou um caractere pipe (|) no YAML.
- objectName
-
Obrigatório. Especifica o nome do parâmetro ou segredo a ser buscado. Para o Secrets Manager, este é o parâmetro
SecretIde pode ser o nome amigável ou o ARN completo do segredo. Para o SSM Parameter Store, esse é oNamedo parâmetro e pode ser o nome ou o ARN completo do parâmetro. - objectType
-
Necessário se você não usar um ARN do Secrets Manager para
objectName. Pode sersecretsmanageroussmparameter. - objectAlias
-
(Opcional) O nome do arquivo do segredo no pod do Amazon EKS. Se você não especificar esse campo, o
objectNameaparece como o nome do arquivo. - filePermission
-
(Opcional) A string octal de 4 dígitos que especifica a permissão do arquivo para montar o segredo. Se você não especificar esse campo, ele será padronizado como
"0644". - objectVersion
-
(Opcional) O ID da versão do segredo. Não recomendado porque é necessário atualizar o ID da versão sempre que atualizar o segredo. Por padrão, a versão mais recente é usada. Se você incluir um
failoverRegion, esse campo representará oobjectVersionprimário. - objectVersionLabel
-
(Opcional) O alias da versão. O padrão é a versão mais recente de AWSCURRENT. Para obter mais informações, consulte Versões do segredo. Se você incluir um
failoverRegion, esse campo representará oobjectVersionLabelprimário. - jmesPath
-
(Opcional) Um mapa das chaves no segredo para os arquivos a serem montados no Amazon EKS. Para usar esse campo, o valor do segredo deve estar no formato JSON. Se você usar esse campo, deverá incluir os subcampos
patheobjectAlias.- caminho
-
Uma chave de um par de chave-valor no JSON do valor do segredo. Se o campo contiver um hífen, use aspas simples para delimitá-lo, por exemplo:
path: '"hyphenated-path"' - objectAlias
-
O nome do arquivo a ser montado no pod Amazon EKS. Se o campo contiver um hífen, use aspas simples para delimitá-lo, por exemplo:
objectAlias: '"hyphenated-alias"' - filePermission
-
(Opcional) A string octal de 4 dígitos que especifica a permissão do arquivo para montar o segredo. Se você não especificar esse campo, ele será padronizado como a permissão de arquivo do objeto pai.
- failoverObject
-
(Opcional) Se você especificar esse campo, o ASCP tentará recuperar o segredo especificado no
objectNameprimário e o segredo especificado no subcampoobjectNamedefailoverObject. Se qualquer um deles retornar um erro 4xx (p. ex., para um problema de autenticação), o ASCP não montará nenhum segredo. Se o segredo for recuperado com êxito doobjectNameprimário, o ASCP montará o valor desse segredo. Se o segredo não for recuperado com êxito doobjectNameprimário, mas for recuperado com êxito doobjectNamedo failover, o ASCP montará o valor desse segredo. Se incluir esse campo, será necessário incluir o campoobjectAlias. Para obter um exemplo de como usar esse campo, consulte Failover para um segredo diferente.Normalmente, você usa esse campo quando o segredo de failover não for uma réplica. Para obter um exemplo de como especificar uma réplica, consulte Failover multirregiões.
- objectName
-
O nome ou ARN completo do segredo de failover. Se você usar um ARN, a região no ARN deverá corresponder ao campo
failoverRegion. - objectVersion
-
(Opcional) O ID da versão do segredo. Deve corresponder ao
objectVersionprimário. Não recomendado porque é necessário atualizar o ID da versão sempre que atualizar o segredo. Por padrão, a versão mais recente é usada. - objectVersionLabel
-
(Opcional) O alias da versão. O padrão é a versão mais recente de AWSCURRENT. Para obter mais informações, consulte Versões do segredo.
Crie uma configuração básica de SecretProviderClass para montar segredos nos pods do Amazon EKS.
Uso do SecretProviderClass
Use estes exemplos para criar configurações de SecretProviderClass para diferentes cenários.
Exemplo: montar segredos por nome ou ARN
Este exemplo mostra como montar três tipos diferentes de segredos:
-
Um segredo especificado por um ARN completo
-
Um segredo especificado pelo nome
-
Uma versão específica de um segredo
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"
Exemplo: montar pares de chave-valor a partir de um segredo
Este exemplo mostra como montar pares de chave-valor específicos de um segredo formatado em 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
Exemplo: montar segredos por permissão de arquivo
Este exemplo mostra como montar um segredo com uma permissão específica de arquivo
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"
Exemplo: exemplos de configuração de failover
Estes exemplos mostram como configurar o failover para segredos.
Failover multirregiões
Este exemplo mostra como configurar o failover automático para um segredo replicado em várias regiões:
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"
Failover para um segredo diferente
Este exemplo mostra como configurar o failover para um segredo diferente (não uma 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 adicionais
Para obter mais informações sobre o uso do ASCP com o Amazon EKS, consulte os seguintes recursos: