Wie teile ich Geheimnisse von AWS Secrets Manager zwischen AWS-Konten?

Lesedauer: 4 Minute
0

Ich möchte mein AWS-Secrets-Manager-Geheimnis mit einem anderen AWS-Konto teilen.

Kurzbeschreibung

In diesem Beispiel verwaltet der Security_Account-Benutzer Ihre Anmeldeinformationen in Konto A und der Dev_Account-Benutzer wird von Ihren Entwicklern in Konto B verwendet. Ein AWS Identity and Access Management (IAM)-Benutzer oder eine Anwendung wird in der Amazon Elastic Compute Cloud (Amazon EC2) Instance Ihres Dev_Account ausgeführt. Dieser Benutzer oder diese Anwendung ruft Geheimnisse im Benutzerkonto Security_Account ab.

Sie können eine ressourcenbasierte Richtlinie für ein Geheimnis verwenden, mit der Sie dem Geheimnis eine Berechtigungsrichtlinie zuordnen können. Sie können diese Richtlinie verwenden, um einer IAM-Entität von Ihrem Dev_Account aus den Zugriff auf das Geheimnis in Ihrem Security_Account zu ermöglichen.

Ein Geheimnis namens devSecret in Ihrem Security_Account (Konto A) wird mit einem AWS Key Management Service (AWS KMS)-Schlüssel devSecretKMS verschlüsselt. Dann wird das Geheimnis mit Ihrem Dev_Account (Konto B) geteilt.

Hinweis: Sie können den AWS-KMS-Standardschlüssel für das Konto nicht verwenden. Der AWS-KMS-Standardschlüssel wird in Ihrem Namen von einem AWS-Service erstellt, verwaltet und verwendet, der auf dem AWS Key Management Service ausgeführt wird. Der AWS-KMS-Standardschlüssel ist einzigartig für Ihr AWS-Konto und Ihre AWS-Region. Nur der Service, der den von AWS verwalteten Schlüssel erstellt hat, kann ihn verwenden. Weitere Informationen finden Sie unter AWS-KMS-Schlüssel.

Lösung

Security_Account konfigurieren (Konto A)

Gehen Sie im Security_Account (Konto A) in der Region, in der Ihr Geheimnis liegt, wie folgt vor:

1.    Wenn Sie kein Geheimnis haben, folgen Sie den Anweisungen zum Erstellen eines Geheimnisses. Geben Sie unbedingt den Amazon-Ressourcennamen (ARN) im Schlüssel-ID-Parameter von AWS KMS für das Geheimnis an.

  1. Wenn Sie über ein vorhandenes Geheimnis verfügen, das einen Alias verwendet, folgen Sie den Anweisungen, um ein Geheimnis zu ändern. Geben Sie unbedingt den AWS-KMS-Schlüssel-ARN im Schlüssel-ID-Parameter von AWS KMS für das Geheimnis an.

**Hinweis:**Sie müssen den vollständigen AWS-KMS-Schlüssel-ARN verwenden, um von einem anderen AWS-Konto aus auf ein Geheimnis zuzugreifen.

3.    Erteilen Sie Berechtigungen in der Schlüsselrichtlinie des AWS-KMS-Schlüssels. Secrets Manager verschlüsselt standardmäßig Geheimnisse. Identitäten, die diese Geheimnisse abrufen, benötigen Zugriff zur Entschlüsselung. Da DevSecret mit DevSecretKMS verschlüsselt ist, müssen Sie die Schlüsselrichtlinie ändern. Fügen Sie dazu die folgenden Berechtigungen hinzu

Hinweis: Ersetzen Sie die Region durch Ihre AWS-Region.

{  "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-??????"
    }
  }
}

Diese Richtlinie gewährt SecretsUser im Dev_Account (Konto B) die Berechtigung, DevSecretKMS im Security_Account (Konto A) zu verwenden.

4.    Erteilen Sie der IAM-Entität die Berechtigung, auf das Geheimnis zuzugreifen. Hängen Sie vom Security_Account aus eine ressourcenbasierte Richtlinie an, die dem SecretsUser die Berechtigung erteilt, DevSecret abzurufen.

Hinweis: Ersetzen Sie den Prinzipal-ARN durch den ARN Ihres IAM-Benutzers oder Ihrer IAM-Rolle.

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

Konfigurieren Sie den Dev_Account (Konto B)

Gehen Sie im Dev_Account (Konto B) wie folgt vor:

1.    Ordnen Sie der IAM-Identität, die das Geheimnis abrufen soll, Berechtigungen zu. Verwenden Sie eine Richtlinie wie die folgende:

Hinweis: Ersetzen Sie die Region durch Ihre AWS-Region.

{  "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"
      ]
    }
  ]
}

Damit der IAM-Benutzer SecretsUser in Dev_Account das Secret abrufen kann, muss der SecretsUser über die Berechtigung SecretsManager:getSecretValue verfügen. Die AWS-Entschlüsselungsberechtigungen sind für SecretsUser erforderlich, da DevSecret mit dem DevSecretKey verschlüsselt wird.

2.    Rufen Sie das Geheimnis als SecretsUser ab, ähnlich wie im Folgenden:

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

Hinweis: Ersetzen Sie Ihre Region durch die AWS-Region, in der sich das Geheimnis befindet.

Sie können diese Anweisungen für alle IAM-Entitäten verwenden. Ersetzen Sie beispielsweise für ein Profil oder eine Rolle einer Amazon EC2 Instance den ARN in der Ressourcenrichtlinie oder fügen Sie ihn hinzu. Bearbeiten Sie anschließend die der IAM-Entität zugewiesenen Berechtigungen.

Ähnliche Informationen

So greifen Sie über AWS-Konten hinweg auf Geheimnisse zu, indem Sie ressourcenbasierte Richtlinien anhängen

Wie kann ich Probleme beim Zugriff auf ein verschlüsseltes Geheimnis in AWS Secrets Manager lösen?

Berechtigungen für Geheimnisse in AWS Secrets Manager für Benutzer in einem anderen Konto

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten