![ECR-Kontenübergreifende Pull-Berechtigungen](https://rvso.com/image/717731/ECR-Konten%C3%BCbergreifende%20Pull-Berechtigungen.png)
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 Fehler
Your 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-policy
mit 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"
]
}
]
}
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