2017-05-01 1 views
1

Je n'ai jamais utilisé AWS S3 auparavant. Nous l'utilisons pour sauvegarder automatiquement les enregistrements d'appels pour les clients. Un de nos clients à des fins de vérification doit avoir accès à leurs enregistrements. J'utilise le client CyberDuck comme un moyen d'accéder aux fichiers. Je veux leur donner accès à seulement leurs fichiers.Autoriser l'accès à la lecture d'un sous-répertoire dans un compartiment Amazon S3

Notre structure de fichier est la suivante:

recordings/12345/COMPANYNAMEHERE/ 

Je viens d'apprendre que vous construisez et faire des choses basées sur des scripts et des politiques. J'ai donc fait quelques recherches et essayé d'en construire un mais j'ai un accès refusé sur la liste.

Juste curieux si je vais à ce sujet correctement.

{ 
    "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

cela pourrait aider: http://docs.aws.amazon.com/ AmazonS3/latest/dev/walkthrough1.html # walkthrough-grant-user1-permissions et celui-ci aussi http: // docs .aws.amazon.com/AmazonS3/latest/dev/using-avec-s3-actions.html – kosa

Répondre

3

Vous avez seulement leur a donné la permission de ListAllMyBuckets, ce qui signifie qu'ils peuvent indiquer que les noms de vos seaux, et ne peuvent rien faire d'autre.

Si vous avez déjà créé un utilisateur IAM pour eux, puis leur donner cette politique leur permettrait de répertorier et de récupérer leurs fichiers, mais seulement à partir du répertoire donné (ou, plus précisément, avec le préfixe donné):

{ 
    "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/*" 
      ] 
     } 
    ] 
} 

Si vous faites cela beaucoup avec les clients, vous pouvez utiliser IAM Policy Variables pour créer une règle qui substitue son nom d'utilisateur:

{ 
    "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}/*" 
      ] 
     } 
    ] 
}