2017-10-13 4 views
0

J'ai généré la politique ci-dessous mais elle permet toujours à toutes les autres instances ec2 d'accéder à mon compartiment. quel changement dois-je apporter à cette politique? ce que je veux est mon seau pour être accessible uniquement à l'instance que je l'ai mentionné et non à toute autre instancerestreindre l'accès au compartiment s3 uniquement aux instances ec2 spécifiques

{ 
    "Id": "Policy1507871740101", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt1507871738318", 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::bucket/*, 
     "Principal": { 
     "AWS":"arn:aws:ec2:region:userid:instance/instanceid" 
     } 
    } 
    ] 
} 
+0

Avez-vous ajouté une stratégie de compartiment dans S3 ou l'avez-vous ajouté au rôle IAM dans EC2? – Ashan

+0

J'ai ajouté cette politique en tant que ma politique de compartiment. devrais-je attacher ceci au rôle d'IAM aussi ??? (note: j'ai déjà un rôle IAM attaché aux instances) –

+1

Vous ne pouvez pas spécifier une instance dans une stratégie de compartiment de cette manière. S3 n'a aucun moyen de savoir quelle instance y accède. Plus important encore, vous semblez essayer de résoudre le mauvais problème. Plus précisément, si vous souhaitez que les autres instances ne puissent pas accéder à un compartiment, n'accordez pas l'accès au compartiment à ces autres instances. * Vous leur avez déjà donné accès via une autre méthode, sinon l'accès serait déjà refusé. Tout est refusé par défaut. –

Répondre

0

Vous ne pouvez pas spécifier ID d'instance, mais vous pouvez spécifier l'adresse IP dans une politique S3.

Cependant, vous avez un autre problème. Si vos instances EC2 peuvent déjà accéder à S3, vous avez rendu le bucket public ou vous avez attribué un rôle à l'instance qui accorde l'autorisation. Revoyez ceci en premier. Trouvez vos trous de sécurité en premier.

Voici un exemple de politique pour les adresses IP en utilisant S3 pour accorder ou refuser l'accès:

{ 
    "Version": "2012-10-17", 
    "Id": "S3PolicyId1", 
    "Statement": [ 
    { 
     "Sid": "IPAllow", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::examplebucket/*", 
     "Condition": { 
     "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}, 
     "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
     } 
    } 
    ] 
} 
+0

pouvons-nous mentionner une seule adresse IP (ip élastique attachée à l'instance ) au lieu d'une plage d'adresses IP? –

+0

Oui, vous pouvez spécifier une adresse IP unique au format CIDR: 54.240.143.188/32 –

0

Juste pour le rendre plus clair: comme cela a été mentionné, vous devriez:

  • retirer le seau la politique
  • créer un rôle EC2 à la place
  • attach ce rôle aux instances que vous voulez avoir accès
  • modifier la politique de rôle

de l'échantillon est ci-dessous:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:DeleteObject", 
       "s3:GetObject", 
       "s3:PutObject" 
      ], 
      "Resource": "arn:aws:s3:::bucket_name/*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListBucket", 
      "Resource": "arn:aws:s3:::bucket_name" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListAllMyBuckets", 
      "Resource": "arn:aws:s3:::" 
     } 
    ] 
} 

Ne hésitez pas à modifier la première instruction pour ajouter/supprimer des actions nécessaires.

+0

merci pour vos efforts. mais en attachant sa politique en tant que rôle à l'instance ec2, je ne pouvais que limiter l'instance ec2 respective pour accéder uniquement aux compartiments mentionnés dans la politique mais ne pas arrêter l'accès au compartiment par d'autres instances. Ce que je veux c'est que mon seau ne soit accessible qu'à l'intension que je veux et pas à l'autre. Y a-t-il un moyen? –

+0

Vous devez supprimer la règle d'accès du compartiment (sauf si vous avez d'autres besoins). Pour * cette * tâche, il n'est pas nécessaire d'avoir la politique du tout. Retirez-le et les autres instances n'y auront pas accès. C'est la toute première étape de ma liste. – Putnik