2017-09-29 1 views
0

Je suis confronté à un problème très étrange qui est soit mon manque de connaissances ou d'un bogue dans SSFE s3:Mon image dans le seau s3 est accessible au public, qui est pas censé être

Je crée donc un s3bucket qui est pas accessible à quiconque en public et ensuite je mets une image dedans. . Alors, quand je tente cette image qui est certainement pas visible à tout le monde qui est bon (donc à la fois mon seau et de l'image ont pas accès public) Puis j'ai ajouté la politique du godet suivant lui:

{ 
"Version": "2012-10-17", 
"Id": "Policy1506624486110", 
"Statement": [ 
    { 
     "Sid": "Stmt1506624421375", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::mybucketname/*" 
    } 
] 
} 

À ce stade Selon ma compréhension, toutes les ressources d'aws sont accessibles à cette image, mais pas les autres personnes du public. Curieusement, je vois que les gens en public, tout étranger peut accéder à cette image. Quelqu'un peut-il expliquer ce que cette politique de seau fait qu'il le rend disponible au public?

+0

Voulez-vous fournir un accès à un rôle IAM spécifique ou à tous les services AWS? –

+0

@VijayanathViswanathan cherche à fournir un accès à tous les utilisateurs aws, mais pas tous les étrangers en public –

+0

@HamedMinaee '" AWS ":" * "' signifie ** absolument tout le monde et tout le monde **. C'est la même chose que "" * "'. –

Répondre

1

Vous faites explicitement votre public seau.

Pour accorder l'autorisation à tout le monde, également appelée accès anonyme, définissez le caractère générique "*" comme valeur principale. Par exemple, si vous configurez votre compartiment en tant que site Web, vous souhaitez que tous les objets du compartiment soient accessibles au public. Ci-dessous sont équivalentes:

"Principal":"*"

"Principal":{"AWS":"*"}

http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html

Le choix d'utiliser la "AWS" au "début" (comme la clé d'objet dans un objet JSON) ou chaîne scalaire nue "*" est vraisemblablement pour des raisons historiques, l'une étant une forme plus ancienne ou plus récente que l'autre, mais cela ne semble pas être documenté. La clé d'objet fait référence à un type d'autorité, avec les autres documented values, y compris "CanonicalUser", "Federated" et "Service".

Il existe très peu de cas d'utilisation valides pour l'utilisation de "*" dans une stratégie, sauf si des tests de conditions supplémentaires dans la stratégie sont utilisés pour affiner la portée de la stratégie.

Notez également que le * n'est pas un vrai joker, ici. C'est seulement un espace réservé pour "tout le monde". Vous ne pouvez pas l'utiliser dans un principal pour faire correspondre une partie d'un ARN. Par exemple, "AWS": [ "arn:aws:iam:account-id:user/*" ] ne signifie pas tous les utilisateurs IAM dans le compte spécifié.

La recommandation de meilleure pratique consiste à ne pas utiliser les stratégies de compartiment lorsque l'action souhaitée peut être accomplie avec des stratégies d'utilisateur ou de rôle.

0

Vous devriez être spécifique au principal. Vous pouvez donner plusieurs ARN au lieu de '*'. Vous générez un générateur de stratégies pour générer une stratégie et spécifier l'ARN que vous voulez dans l'entité principale. Il serait utile de lire ci-dessous lien,

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

+0

Mais "AWS": "*" signifie-t-il que seules les ressources aws peuvent voir l'image? Si oui, pourquoi les étrangers peuvent voir cela aussi? –