Wir möchten einige Daten in S3 speichern und nur EC2-Instanzen oder einem bestimmten Benutzer mit einer bestimmten IAM-Rolle erlauben, auf sie zuzugreifen. Leider haben wir einige Probleme damit.Wie beschränke ich den Zugriff auf S3-Bucket für bestimmte IAM-Rolle?
Wir setzten eine Politik auf dem heißen Stein wie diese
{
"Version": "2012-10-17",
"Id": "SamplePolicy",
"Statement": [
{
"Sid": "Stmt1331136294179",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
},
{
"Sid": "Stmt1331136364169",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
}
]}
Wenn wir den Eimer (mit Boto) Zugang mit Benutzer ippen es funktioniert gut, von einem lokalen Rechner oder einer EC2-Instanz.
Aber wenn wir den Eimer von Boto Zugang bekommen wir
ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
ich bestätigt habe, dass die Instanz die korrekte IAM Rolle
curl http://169.254.169.254/latest/meta-data/iam/info/
{
"Code" : "Success",
"LastUpdated" : "2015-10-22T09:09:31Z",
"InstanceProfileArn" : "our-account-number:instance-profile/the-role",
"InstanceProfileId" : "instance-rpofile-id"
}
Ich habe auch die Politik zu entfernen versucht, aus dem Eimer, der es tatsächlich wieder zugänglich macht. Irgendwelche Ideen, wie man damit umgeht?
Das Beispiel, das ich hier geteilt habe, ist eine vereinfachte Version, die ich für das Debugging gemacht habe. In der Produktion müssen wir das Objekt zwingen, mit KMS verschlüsselt zu werden und eine Zugangsrichtlinie für den Schlüssel zu haben. Wir mögen diese Lösung sehr und ziehen es vor, sie zu behalten, wenn wir können.
Dank
Können Sie Ihre Rolle Politik zeigen? –
'code { "Version": "2012.10.17", "Statement": [{ "Effect": "Erlauben", "Aktion": "s3: *", "Ressource": "*" } ] } ' –