web-dev-qa-db-fra.com

AWS S3 Bucket Access à partir d'EC2

Je dois lancer un compartiment S3 pour que mes instances EC2 puissent y stocker des fichiers image. Les instances EC2 ont besoin d'autorisations de lecture/écriture. Je ne souhaite pas rendre le compartiment S3 accessible au public, je souhaite uniquement que les instances EC2 y aient accès.

L'autre chose à faire est que mes instances EC2 sont gérées par OpsWorks et que je peux avoir différentes instances en cours d'activation en fonction de la charge/de l'utilisation. Si je le limitais par IP, je ne saurais pas toujours connaître l'IP des instances EC2. Puis-je restreindre par VPC?

Dois-je activer mon compartiment S3 pour l'hébergement de site Web statique? Dois-je rendre tous les fichiers du compartiment public aussi pour que cela fonctionne?

8
hiddenicon

Vous n'avez pas besoin de rendre le compartiment lisible en public, ni les fichiers en lecture publique. Le seau et son contenu peuvent rester confidentiels.

Ne limitez pas l'accès au compartiment en fonction de l'adresse IP, mais plutôt en fonction du rôle IAM utilisé par l'instance EC2.

  1. Créez un rôle d'instance IAM EC2 pour vos instances EC2.
  2. Exécutez vos instances EC2 en utilisant ce rôle.
  3. Attribuez à ce rôle IAM une stratégie pour accéder au compartiment S3.

Par exemple:

{
  "Version": "2012-10-17",
  "Statement":[{
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my_bucket",
                 "arn:aws:s3:::my_bucket/*"]
    }
  ]
} 
  1. Si vous souhaitez limiter l'accès au compartiment lui-même, essayez une stratégie de compartiment S3.

Par exemple:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my_bucket",
                   "arn:aws:s3:::my_bucket/*"]
    }
  ]
}

Informations complémentaires: http://blogs.aws.Amazon.com/security/post/TxPOJBY6FE360K/IAM-policies-and-Bucket-Policies-and-ACLs-Oh-My-Controlling-Access-to-S3-Resourc

8
Matt Houser

Le rôle IAM est la solution pour vous. 

Vous devez créer un rôle avec une autorisation d'accès s3. Si l'instance ec2 a été démarrée sans aucun rôle, vous devez la reconstruire avec ce rôle attribué. 

 enter image description here

Reportez-vous à: Autoriser AWS OpsWorks à agir pour votre compte

1
BMW