ECR-Kontenübergreifende Pull-Berechtigungen

ECR-Kontenübergreifende Pull-Berechtigungen

Wir haben zwei AWS-Konten. Konto A hat ECR-Repositorys und Konto B soll von diesen abrufen können.

Ich habe versucht, die Repository-Berechtigungsanweisungen in Konto A so festzulegen, dass das Abrufen von Konto B möglich ist, aber AWS behauptet, meine Richtlinie sei ungültig.

Ich habe versucht:

  • Als Auftraggeber wird die Kontonummer von Konto B festgelegt. Dies führt zu dem FehlerYour permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • Setzen des Principals auf die ARN des Root-Benutzers in Konto B ( arn:aws:iam::1234567891011:root). Dies führt zu dem FehlerThe service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • Festlegen des Auftraggebers auf die ARN eines IAM-Benutzers in Konto B. Gleicher Fehler wie oben.

Die oben genannten Schritte wurden über die AWS-Konsole durchgeführt, die keine direkte Bearbeitung des JSON für ECR-Berechtigungen zulässt. Ich habe den CLI-Befehl aws ecr set-repository-policymit den oben genannten Änderungen ausprobiert, aber im Terminal wurden die gleichen Fehler zurückgegeben.

Hinzufügen von Berechtigungen für IAM-Benutzer innerhalbdas gleicheKonto funktioniert einwandfrei.

Die Aktionen, die ich versucht habe, der Richtlinie hinzuzufügen, sind:

        "Action": [
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:ListImages",
            "ecr:DescribeRepositories"
        ]

Irgendwelche Ideen, was ich falsch machen könnte?

Antwort1

Sie müssen im ECR auch Berechtigungen für den kontenübergreifenden Zugriff konfigurieren. Um Konto B Pull-Zugriff auf den ECR von Konto A zu gewähren, fügen Sie die folgende JSON-Richtlinie in die Registerkarte „ECR-Berechtigungen“ ein.

{
    "Version": "2008-10-17",
    "Statement": [
      {
        "Sid": "AllowCrossAccountPull",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::aws_account_b_number:root"
        },
        "Action": [
          "ecr:GetDownloadUrlForLayer",
          "ecr:BatchCheckLayerAvailability",
          "ecr:BatchGetImage"
        ]
      }
    ]
  }

Bildbeschreibung hier eingeben

Antwort2

Sie müssen eine übergreifende Kontorolle für Konto B einrichten, die es übernehmen kann.

Erstellen Sie die kontoübergreifende Rolle in dem Konto, das über die Registrierung A verfügt, und gewähren Sie in der Rolle Zugriff auf die Registrierung. Und erteilen Sie dem Konto B die Berechtigungen, diese Rolle zu übernehmen.

http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

verwandte Informationen