Como faço para compartilhar segredos do AWS Secrets Manager entre contas da AWS?

4 minuto de leitura
0

Quero compartilhar meu segredo do AWS Secrets Manager com outra conta da AWS.

Breve descrição

Neste exemplo, o usuário Security_Account gerencia suas credenciais na conta A, e o usuário Dev_Account é usado pelos desenvolvedores na conta B. Um usuário do AWS Identity and Access Management (IAM) ou uma aplicação em execução na instância do Amazon Elastic Compute Cloud (Amazon EC2) do seu Dev_Account. Esse usuário ou aplicativo recupera segredos na conta de usuário Security_Account.

Use uma política baseada em atributos para um segredo que lhe permita anexar uma política de permissões ao segredo. Use essa política para permitir que uma entidade do IAM da sua conta de Dev_Account acesse o segredo em Security_Account.

Um segredo chamado DevSecret na Security_Account (conta A) é criptografado com uma chave do AWS Key Management Service (AWS KMS) DevSecretKMS. Em seguida, o segredo é compartilhado com conta Dev_Account (conta B).

Observação: não é possível usar a chave padrão do AWS KMS para a conta. A chave padrão do AWS KMS é criada, gerenciada e usada em seu nome por um serviço da AWS executado no AWS Key Management Service. A chave padrão do AWS KMS é exclusiva para sua conta da AWS e região da AWS. Somente o serviço que criou a chave gerenciada pela AWS pode usá-la. Para obter mais informações, consulte chaves do AWS KMS.

Resolução

Configurar Security_Account (conta A)

Siga estas etapas na Security_Account (conta A), na região onde está seu segredo.

1.    Se você não tiver um segredo, siga as instruções para criar um segredo. Especifique o nome do recurso da Amazon (ARN) no parâmetro de ID da chave do AWS KMS para o segredo.

2.    Se você tiver um segredo existente que usa um alias, siga as instruções para modificar um segredo. Especifique o ARN da chave do AWS KMS no parâmetro de ID da chave do AWS KMS para o segredo.

Observação: você deve usar o ARN completo da chave do AWS KMS para acessar um segredo em outra conta da AWS.

3.    Conceda permissões na política de chave da chave do AWS KMS. O Secrets Manager criptografa segredos por padrão. As identidades que recuperam esses segredos exigem acesso para descriptografá-los. Como o DevSecret é criptografado com DevSecretKMS, você deve alterar a política de chave. Para fazer isso, adicione as seguintes permissões

Observação: substitua your-region pela sua região da AWS.

{  "Sid": "AllowUseOfTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser"
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "secretsmanager.your-region.amazonaws.com"
    },
    "StringLike": {
      "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????"
    }
  }
}

Essa política concede ao SecretsUser na Dev_Account (conta B) a permissão para usar o DevSecretKMS na Security_Account (conta A).

4.    Permita que a permissão de entidade do IAM acesse o segredo. Pela Security_Account, anexe uma política baseada em atributos que conceda permissão para que o SecretsUser recupere o DevSecret.

Observação: substitua o ARN principal pelo ARN do seu usuário ou função do IAM.

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }
  ]

Configurar a Dev_Account (conta B)

Siga estas etapas na Dev_Account (conta B).

1.    Anexe permissões à identidade do IAM cujo segredo você quer recuperar. Use uma política semelhante à seguinte:

Observação: substitua your-region pela sua região da AWS.

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGetSecretValue",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????"
      ]
    },
    {
      "Sid": "AllowKMSDecrypt",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:your-region:Security_Account:key/DevSecretKMS_id"
      ]
    }
  ]
}

O SecretsUser deve ter permissão para secretsmanager:GetSecretValue para que o usuário do IAM SecretsUser na Dev_Account recupere o segredo. As permissões de decodificação da AWS são necessárias para SecretsUser, porque o DevSecret é criptografado com o DevSecretKey.

2.    Recupere o segredo como SecretsUser, semelhante ao seguinte:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret --version-stage AWSCURRENT --region your-region

Observação: substitua your-region pela região da AWS em que o segredo está.

Use essas instruções para todas as entidades do IAM. Por exemplo, para um perfil de instância do Amazon EC2 ou uma função, substitua ou adicione o ARN na política de recursos. Em seguida, edite as permissões anexadas à entidade do IAM.

Informações relacionadas

Como acessar segredos em todas as contas da AWS anexando políticas baseadas em recursos

Como posso resolver problemas de acesso a um segredo criptografado do AWS Secrets Manager?

Permissões para segredos do AWS Secrets Manager para usuários de outra conta

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses