Skip to main content
Une version plus récente de ce produit est disponible.
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Exemples de stratégie de compartiment de l'API REST StorageGRID S3

Utilisez les exemples de cette section pour créer des politiques d'accès StorageGRID pour les compartiments.

Les stratégies de compartiment définissent les autorisations d'accès pour le compartiment auquel la stratégie est associée. Vous configurez une stratégie de compartiment à l'aide de l'API S3 PutBucketPolicy via l'un de ces outils :

Exemple : Autoriser tout le monde à accéder en lecture seule à un compartiment

Dans cet exemple, tout le monde, y compris les utilisateurs anonymes, est autorisé à lister les objets du compartiment et à effectuer des opérations GetObject sur tous les objets du compartiment. Toutes les autres opérations seront refusées. Notez que cette politique peut s'avérer peu utile, car seul le compte racine dispose des autorisations d'écriture dans le compartiment.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:GetObject", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
    }
  ]
}

Exemple : Autoriser à tous les utilisateurs d’un compte un accès complet, et à tous les utilisateurs d’un autre compte un accès en lecture seule à un compartiment

Dans cet exemple, tous les membres d'un compte spécifié bénéficient d'un accès complet à un compartiment, tandis que tous les membres d'un autre compte spécifié sont uniquement autorisés à lister le compartiment et à effectuer des opérations GetObject sur les objets du compartiment commençant par le préfixe de clé de l'objet shared/.

Remarque Dans StorageGRID, les objets créés par un compte autre que le propriétaire (y compris les comptes anonymes) appartiennent au compte propriétaire du compartiment. La politique du compartiment s'applique à ces objets.
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "95390887230002558202"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/shared/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::examplebucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "shared/*"
        }
      }
    }
  ]
}

Exemple : Autoriser tout le monde à accéder en lecture seule à un compartiment et à accorder un accès complet à un groupe spécifique

Dans cet exemple, tout le monde, y compris les utilisateurs anonymes, est autorisé à lister le compartiment et à effectuer des opérations GetObject sur tous les objets du compartiment, tandis que seuls les utilisateurs appartenant au groupe Marketing dans le compte spécifié bénéficient d'un accès complet.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:ListBucket","s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Exemple : Autoriser à tous la lecture et l'écriture dans un bucket si le client se trouve dans la plage d'adresses IP

Dans cet exemple, toute personne, y compris anonyme, est autorisée à lister le bucket et à effectuer des opérations sur tous les objets du bucket, à condition que les requêtes proviennent d'une plage d'adresses IP spécifiée (54.240.143.0 à 54.240.143.255, sauf 54.240.143.188). Toutes les autres opérations seront refusées et toutes les requêtes en dehors de la plage d'adresses IP seront refusées.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:*Object", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
      "Condition": {
        "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
        "NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
      }
    }
  ]
}

Exemple : Autoriser l’accès complet à un compartiment exclusivement à un utilisateur fédéré spécifié

Dans cet exemple, l'utilisateur fédéré Alex bénéficie d'un accès complet au examplebucket bucket et à ses objets. Tous les autres utilisateurs, y compris 'root', se voient explicitement refuser toutes les opérations. Notez cependant que 'root' ne se voit jamais refuser les autorisations de Put/Get/DeleteBucketPolicy.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Exemple : autorisation PutOverwriteObject

Dans cet exemple, l' `Deny`effet pour PutOverwriteObject et DeleteObject garantit que personne ne peut écraser ou supprimer les données de l'objet, les métadonnées définies par l'utilisateur et le balisage de l'objet S3.

{
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutOverwriteObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::wormbucket/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::wormbucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::wormbucket/*"
    }
  ]
}