2017-05-01 3 views
1

Ich habe AWS S3 noch nie zuvor verwendet. Wir verwenden es, um Anrufaufzeichnungen für Clients automatisch zu sichern. Einer unserer Kunden für Prüfungszwecke benötigt Zugriff auf ihre Aufzeichnungen.Zugriff gewähren, um ein Unterverzeichnis in einem Amazon S3-Bucket zu lesen

Ich benutze den Client CyberDuck als eine Möglichkeit, auf die Dateien zuzugreifen.

Ich möchte ihnen Zugriff auf nur ihre Dateien geben.

Unsere Dateistruktur ist wie folgt:

recordings/12345/COMPANYNAMEHERE/ 

Ich habe gerade erfahren, dass Sie bauen und Dinge tun, basierend auf Skripten und Richtlinien. Also habe ich ein paar Nachforschungen angestellt und versucht, eine zu erstellen, aber ich bekomme einen Zugriff bei der Auflistung verweigert.

Nur neugierig, ob ich das richtig mache.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListAllMyBuckets", 
      "Resource": "arn:aws:s3:::*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::recordings/12345/COMPANYNAMEHERE", 
       "arn:aws:s3:::recordings/12345/COMPANYNAMEHERE/*" 
      ] 
     } 
    ] 
} 
+0

Dies könnte helfen: http://docs.aws.amazon.com/ AmazonS3/neuste/dev/walkthrough1.html # walkthrough-grant-user1-Berechtigungen und auch dieses http: // docs .aws.amazon.com/AmazonS3/neueste/dev/using-with-s3-actions.html – kosa

Antwort

3

Sie haben nur ihnen die Erlaubnis zu ListAllMyBuckets, da das heißt, sie nur die Namen Ihrer Eimer auflisten können, und nichts anderes tun kann.

Wenn Sie bereits erstellt eine IAM-Benutzer für sie, dann sie diese Politik geben würde ihnen erlauben, ihre Dateien aufzulisten und abrufen, sondern nur aus dem angegebenen Verzeichnis (oder, genauer gesagt, mit dem angegebenen Präfix):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket" 
      ], 
      "Condition": { 
       "StringLike": { 
        "s3:prefix": [ 
         "recordings/123/*" 
        ] 
       } 
      } 
     }, 
     { 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket/recordings/123/*" 
      ] 
     } 
    ] 
} 

Wenn Sie dies viel mit Kunden zu tun, dann können Sie IAM Policy Variables verwenden, um eine Regel zu erstellen, die ihren Benutzernamen ersetzt:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket" 
      ], 
      "Condition": { 
       "StringLike": { 
        "s3:prefix": [ 
         "recordings/${aws:username}/*" 
        ] 
       } 
      } 
     }, 
     { 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket/recordings/${aws:username}/*" 
      ] 
     } 
    ] 
} 
Verwandte Themen