Le Blog Amazon Web Services

Rédaction de stratégies AWS IAM : Comment donner accès à un compartiment Amazon S3?

Dans cet article, nous allons aborder une question courante sur la façon d’écrire une stratégie de gestion d’identité et d’accès (IAM) pour permettre l’accès en lecture-écriture à un compartiment Amazon S3 de manière sécurisée. Cela vous permet de contrôler qui peut accéder à vos données stockées dans Amazon S3.

Amazon S3 est sécurisé par défaut. Si les clients utilisent la configuration par défaut, le compartiment verrouille l’accès au seul propriétaire du compte et à l’administrateur racine. Depuis la création du service, l’un des principes fondamentaux d’AWS a été de permettre aux utilisateurs de modifier la configuration par défaut pour s’adapter à n’importe quel type d’application qu’ils construisent.

A l’aide de stratégies d’accès définies dans AWS Identity and Access Management (AWS IAM), vous pouvez accorder un accès programmatique ou un accès depuis la console AWS aux ressources Amazon S3 (fichiers ou répertoires). Par exemple, vous pouvez accorder un accès programmatique à une application qui recueille des données sur un site web, puis lit et écrit les données dans un compartiment Amazon S3. Avec l’accès depuis la console, les utilisateurs qui interagissent avec Amazon S3 pour télécharger et envoyer des fichiers peuvent utiliser une interface web au lieu de faire des appels d’API. Examinons deux stratégies différentes : une qui permet l’accès programmatique et une autre qui permet l’accès depuis la console.

Stratégie pour l’accès programmatique

La stratégie AWS IAM suivante accorde un accès programmatique en lecture-écriture au compartiment nommé test :

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

La stratégie est séparée en deux parties car l’action ListBucket nécessite des autorisations sur le compartiment tandis que les autres actions nécessitent des autorisations sur les objets du compartiment. Vous devez utiliser deux noms de ressources Amazon (ARN) différents pour spécifier les autorisations au niveau du compartiment et au niveau de l’objet. Le premier élément de ressource spécifie arn:aws:s3:::test pour l’action ListBucket afin que les applications puissent lister tous les objets du compartiment de test. Le deuxième élément de ressource spécifie arn:aws:s3:::test/* pour les actions GetObject, PutObject et DeleteObject afin que les applications puissent lire, écrire et supprimer tout objet dans le compartiment de test.

Nous n’avons pas utilisé un caractère générique, tel que arn:aws:s3:::test* pour l’ARN du deuxième Statement. En effet, même si cet ARN accorderait les autorisations pour toutes les actions dans une seule déclaration, il serait plus large et donnerait accès à tous les compartiments et objets de ce compartiment qui commencent par test, comme test-bucket ou testing, ce qui n’est pas le but recherché.

Stratégie pour l’accès depuis la console de gestion AWS

Pour l’accès depuis la console, nous devrons faire un ajout à la stratégie précédente. La console doit permettre d’afficher la liste de tous les compartiments du compte. Pour ce faire, les utilisateurs doivent effectuer les actions GetBucketLocation et ListAllMyBuckets pour toutes les ressources Amazon S3, comme indiqué dans l’exemple suivant :

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

Avec la déclaration supplémentaire, les utilisateurs peuvent consulter le compartiment de test en utilisant la console. Sans ces autorisations, l’accès est refusé. La console liste tous les compartiments du compte, mais les utilisateurs ne peuvent pas voir le contenu d’un autre compartiment. Les autorisations de lecture et d’écriture ne sont spécifiées que pour le compartiment de test, comme dans la stratégie précédente. Si un utilisateur tente de consulter un autre compartiment, l’accès lui est refusé.

Conclusion

Nous avons vu comment mettre en pratique les stratégies AWS IAM pour restreindre l’accès à des ressources Amazon S3 simples. Pour aller plus loin, découvrez comment évaluer vos stratégies d’accès aux compartiments Amazon S3 et vous permettre de découvrir et de corriger rapidement les compartiments présentant un accès potentiellement indésirable.

Pour plus d’informations sur les stratégies AWS IAM et Amazon S3, consultez les ressources Amazon suivantes :

Article original contribué par Jim Scharf et adapté en français par Jérome Gras, Solutions Architect dans les équipes AWS France.