2017-11-21 4 views
0

Ich habe einen S3-Bucket, für den ich den Zugriff für alle Benutzer verweigern und den Zugriff auf eine bestimmte IAM-Rolle erlauben muss.AWS IAM-Zugriff auf s3

Ich folgte dem von AWS bereitgestellten Dokument. Ich kann es für Benutzer tun, aber wenn ich für die Rolle tue, funktioniert das nicht. Kann jemand helfen?

https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

habe ich versucht, den folgenden Code in S3 Eimer policy.It für alle Benutzer einschließlich Lambda-Rolle den Zugriff verweigern verursachen.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::relambda", 
       "arn:aws:s3:::relambda/*" 
      ], 
      "Condition": { 
       "StringNotLike": { 
        "aws:roleId": [ 
         "KDCNKWDCKQWCLQKC:*", 
         "5371235537537" 
        ] 
       } 
      } 
     } 

    ] 
} 

Antwort

0

Sie haben nichts in Principal.

Bitte beachten/verwenden Sie die folgenden Richtlinien.

Ein IAM-Benutzer hat eine eindeutige ID, die mit AIDA beginnt, die Sie für diesen Zweck verwenden können. So finden Sie diese eindeutige ID:

Öffnen Sie bei installierter AWS CLI eine Eingabeaufforderung oder eine Shell. Führen Sie den folgenden Befehl aus: aws iam get-user - Benutzername USER-NAME Suchen Sie in der Ausgabe nach der Zeichenfolge userId, die mit AIDAEXAMPLEID beginnt. Wenn Sie die userId-Zeichenfolge identifiziert haben, können Sie sie im Array "aws: userId" platzieren, wie im folgenden Beispiel gezeigt.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": [ 
     "arn:aws:s3:::MyExampleBucket", 
     "arn:aws:s3:::MyExampleBucket/*" 
     ], 
     "Condition": { 
     "StringNotLike": { 
      "aws:userId": [ 
      "AROAEXAMPLEID:*", 
      "AIDAEXAMPLEID", 
      "111111111111" 
      ] 
     } 
     } 
    } 
    ] 
} 
+0

Hallo, du hast mir eine Lösung für den Benutzer.Ich brauche für IAM role.User kann ich arbeiten, aber es funktioniert nicht für die Rolle. –

+0

Was ist der Unterschied zwischen Ihrem Code und meinem Code –

0

Es scheint, dass Ihre Anforderung ist:

  • Zugriff verweigern standardmäßig
  • Zugriff erlauben für eine bestimmte IAM Rolle

Glücklicherweise ist die Standardeinstellung für alle Eimer Amazon S3 um den Zugriff standardmäßig zu verweigern, so wird dieser automatisch erfüllt!

Um den Zugriff für eine bestimmte Rolle zu ermöglichen, verwenden Sie eine Bucket Politik wie folgt aus:

{ 
    "Id": "AllowRoleAccess", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "AllowRole", 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::BUCKET-NAME", 
     "arn:aws:s3:::BUCKET-NAME/*" 
     ], 
     "Principal": { 
     "AWS": [ 
      "arn:aws:iam::222222222222:role/ROLE-NAME" 
     ] 
     } 
    } 
    ] 
} 

Es gibt auch andere Einstellungen, die Sie verwenden können, um es zu einem bestimmten EC2-Instanz zu begrenzen, die eine Rolle verwendet.

+0

Hallo, Sie erwähnten, dass s3 standardmäßig Zugriff verweigert.Ich habe S3-Bucket erstellt und Lese-, Schreib-Operation entfernt und die nur für Root-Account angewendet wird. Nicht für alle –

+0

Buckets standardmäßig Sie haben keine Bucket-Richtlinie, daher gewähren sie keinen Zugriff. IAM-Benutzer und -Rollen können jedoch auch dann Zugriff auf einen Bucket gewähren, wenn der Bucket über keine Zugriffsrichtlinie verfügt. Daher kann das oben genannte auch erreicht werden, indem Berechtigungen für die Rolle ohne Bucket-Richtlinie erteilt werden. –

+0

Aber ohne Bucket-Richtlinie in einem frischen neuen Bucket kann ich zugreifen. Es gibt keine Einschränkung. –