2017-07-14 4 views
0

Je suis en train de télécharger des fichiers que j'ai déjà téléchargés sur S3 avec du code Python, mais j'ai des problèmes de tête en essayant d'utiliser une politique stricte.Pourquoi cette stratégie AWS IAM ne fonctionne qu'avec un astérisque sur la ressource?

Je peux lister tous les fichiers dans le seau, mais lorsque je tente ne les télécharger avec ce que je vois comme une politique correcte, je reçois botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

Puis, quand je tentais d'ajouter une autre politique qui a fonctionné pour 2 seaux différents, j'ai ajouté une partie du nom du seau, puis l'astérisque, et pour une raison quelconque, la même chose a fonctionné.

Alors quelqu'un peut-il me dire pourquoi cela se produit?

Ce par exemple, est ce qui fonctionne comme un charme:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1499955913000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject", 
       "s3:ListBucket" 
      ], 
      "Resource": "arn:aws:s3:::THE-BEGINING-OF-THE-NAME*" 
     } 
    ] 
} 

Mais cela ne:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1499955913000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject", 
       "s3:ListBucket" 
      ], 
      "Resource": "arn:aws:s3:::THE-EXACT-COMPLETE-FULL-NAME" 
     } 
    ] 
} 

Je peux ajouter le code python pour le téléchargement si elle est pertinente, mais questions semble assez long, et le code est assez simple

+0

Difficile pour nous de vous dire quoi que ce soit sans regarder les chaînes réelles qui causent votre problème. – RaGe

Répondre

0

Semble que je avais juste besoin de débogage de canard en caoutchouc, la réponse était je pense contre-intuitif, mais facile:

Il semble que l'ARN n'est pas seulement un identifiant pour la ressource AWS elle-même, mais aussi son contenu. Ainsi, en donnant les autorisations, vous devez donner des autorisations à « le seau » pour elle la liste, et « le contenu » pour le télécharger

Ce qui conduit à une telle politique:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1499955913000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject", 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::THE-EXACT-COMPLETE-FULL-NAME", 
       "arn:aws:s3:::THE-EXACT-COMPLETE-FULL-NAME/*" 
     } 
    ] 
} 

Qui, comme J'ai dit, donne le contrôle sur le seau lui-même, sans astérisques, et tout ce qui va après la barre oblique