Politiques de Buckets

Les politiques de gestion des Buckets fournissent à des Object Users spécifiques, ou à tous les Object Users, des autorisations conditionnelles et granulaires pour des actions spécifiques.

Les conditions des politiques peuvent être utilisées pour attribuer des autorisations à une série d'objets qui correspondent à la condition souhaitée et peuvent être utilisées pour attribuer automatiquement des autorisations aux objets nouvellement téléchargés.

La manière dont l'accès aux ressources est gérée lors de l'utilisation du protocole S3 est décrite dans https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html et vous pouvez utiliser ces informations comme base pour comprendre et utiliser les politiques de gestion des Buckets fournit par le service de Stockage d'Objet de cegedim.cloud.

Cette section fournit des informations de base sur l'utilisation des politiques de gestion des Buckets.

Gérer les politiques de gestion des Buckets

Les politiques de gestion des Buckets peuvent être gérées en utilisant le client aws s3api (d'autres outils ou SDK fonctionnent aussi):

  • get-bucket-policy

  • put-bucket-policy

  • delete-bucket-policy

Nous utilisons les utilitaires aws s3 et aws s3api issues du client S3 AWSCLIv2 sur Linux. ${S3_ENDPOINT} & ${S3_PROFILE} sont des variables d'environnement.

Créer une politique de gestion de Bucket

Créez un fichier et insérez votre politique de gestion au format JSON :

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "Grant permission to <access_key>",
            "Effect": "Allow",
            "Principal": ["<access_key>"],
            "Action": [ "s3:PutObject","s3:GetObject" ],
            "Resource":[ "bucket-test/*" ]
        }
    ]
}

L’élément Principal spécifie les Access Key des Object Users qui sont autorisés ou non, à effectuer les actions sur les différentes ressources spécifiées.

Vous pouvez spécifier un wildcard '*' pour indiquer tous les Object Users.

Attention, utiliser le wildcard '*' dans une politique de gestion de Buckets, signifie que tout le monde peut accéder aux ressources spécifiées et effectuer les actions spécifiées

Appliquez la politique des gestions sur le Bucket: bucket-test

aws s3api --endpoint-url=${S3_ENDPOINT} put-bucket-policy --bucket bucket-test --policy file://policy.json --profile ${S3_PROFILE}

Afficher la politique de gestion sur un Bucket

aws s3api --endpoint-url=${S3_ENDPOINT} get-bucket-policy --bucket bucket-test --profile ${S3_PROFILE}

Supprimer une politique de gestion sur un Bucket

aws s3api --endpoint-url=${S3_ENDPOINT} delete-bucket-policy --bucket bucket-test --profile ${S3_PROFILE}

Exemples de politique de gestion d'un bucket

Accorder des permissions à un Object User

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "Grant permission to user1",
            "Effect": "Allow",
            "Principal": ["<access_key>"],
            "Action": [ "s3:PutObject","s3:GetObject" ],
            "Resource":[ "arn:aws:s3:::mybucket/*" ]
        }
    ]
}

Accorder des permissions en lecture seule à un Object User

{
  "Version": "2012-10-17",
  "Id": "s3ReadOnlyforUser",
  "Statement": [
    {
      "Sid": "Grant read permission to user1",
      "Effect": "Allow",
      "Principal": ["<access_key>"],
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::mybucket",
        "arn:aws:s3:::mybucket/*"
      ]
    }
  ]
}

Accorder les autorisations d’accès à tous les utilisateurs (accès public)

Le service de Stockage d'Objet de cegedim.cloud est directement accessible depuis Internet.

Si vous accordez un accès public à votre Bucket ou à un sous-ensemble de votre Bucket, tout le monde peut obtenir vos objets.

Pour plus d'informations, consulter Gérer l'accès à un Bucket.

Bucket publique
{
    "Version": "2012-10-17",
    "Id": "S3PolicyId2",
    "Statement": [
        {
            "Sid": "Public Access to mybucket",
            "Effect": "Allow",
            "Principal": ["*"],
            "Action": [ "s3:GetObject" ],
            "Resource":[ "arn:aws:s3:::mybucket/*" ]
        }
    ]
}

Accès à un Bucket via un navigateur Web

Avec l'accès public, le contenu du Bucket peut être consulté directement à l'aide d'un navigateur web.

L'URL pour accéder à un Bucket public suit ce format : https://<objectstore_name>.storage-[eb4|et1].cegedim.cloud/<bucket_name>

Par exemple : https://cos-cegedimit-myit.storage-eb4.cegedim.cloud/mybucket

Accorder les autorisations d’accès à tous les utilisateurs (accès public) pour les objets sous un préfixe spécifique

Le service de Stockage d'Objet de cegedim.cloud est directement accessible depuis Internet.

Si vous accordez un accès public à votre Bucket ou à un sous-ensemble de votre Bucket, tout le monde peut obtenir vos objets.

Avec la politique suivante, tous les objets du Bucket my-bucket et sous le préfixe public/ sont accessibles publiquement, sans authentification :

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"public-access-based-on-prefix",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::my-bucket/public/*"]
      }
  ]
}

Opérations et conditions des politiques supportées

Opérations supportées

Permissions pour les opérations sur les objets

PermissionsOpérations S3

s3:GetObject S'applique à la dernière version d'un objet dans un Bucket où la gestion des version es activée.

GET Objet, HEAD Objet

s3:GetObjectVersion

GET Objet, HEAD Objet. (pour une version spécifique de l'objet)

s3:PutObject

Objet PUT, Objet POST, Initier un téléchargement "mulitpart" ou un télécharger d'une "part"

Objet PUT Terminer un téléchargement "mulitpart"

s3:GetObjectAcl

GET Objet ACL

s3:GetObjectVersionAcl

GET ACL (pour une version spécifique de l'objet)

s3:PutObjectAcl

PUT Object ACL

s3:PutObjectVersionAcl

PUT Objet (pour une version spécifique de l'objet)

s3:DeleteObject

DELETE Objet

s3:DeleteObjectVersion

DELETE Objet (une version spécifique de l'objet)

s3:ListMultipartUploadParts

Liste des ''parts" dans un téléchargement "mulitpart"

s3:AbortMultipartUpload

Terminer le téléchargement "mulitpart"

Permissions pour les opérations sur les Buckets

PermissionsOpérations S3

s3:DeleteBucket

DELETE Bucket

s3:ListBucket

GET Bucket (Liste les objets), HEAD Bucket

s3:ListBucketVersions

GET Bucket (pour une version spécifique de l'objet))

s3:GetLifecycleConfiguration

GET politique de gestion du Cycle de vie d'un Bucket

s3:PutLifecycleConfiguration

PUT politique de gestion de Cycle de vie sur un Bucket

Permissions pour les opérations sur les sous-ressources d'un Bucket

PermissionsOpérations S3

s3:GetBucketAcl

GET Bucket acl

s3:PutBucketAcl

PUT Bucket acl

s3:GetBucketCORS

GET Bucket cors

s3:PutBucketCORS

PUT Bucket cors

s3:GetBucketVersioning

GET Bucket versioning

s3:PutBucketVersioning

PUT Bucket versioning

s3:GetBucketPolicy

GET Politique de gestion du Bucket

s3:DeleteBucketPolicy

DELETE Politique de gestion du Bucket

s3:PutBucketPolicy

PUT Politique de gestion du Bucket

Conditions supportées

L'élément "condition" est utilisé pour spécifier les conditions qui déterminent quand une règle s'applique.

Les tableaux suivants référencent les conditions qui sont supportées par le service de Stockage Objet de cegedim.cloud et qui peuvent être utilisées dans les expressions de condition.

Conditions génériques supportées

ConditionDescriptionOpérateurs applicables

aws:CurrentTime

Utilisé pour vérifier les conditions basées sur la date et l'heure

Opérateur de date

aws:EpochTime

Utilisé pour vérifier les conditions basées sur la date et l'heure en utilisant le format EPOCH (voir Opérateurs de condition de date).

Opérateur de date

aws:principalType

Utilisé pour vérifier le type de principal (utilisateur, compte, utilisateur fédéré, etc.) pour la requête en cours.

Opérateur de chaîne de caractères

aws:SourceIp

Utilisé pour vérifier l'adresse IP source.

Opérateur de chaîne caractères

aws:UserAgent

Utilisé pour vérifier "UserAgent" du demandeur.

Opérateur de chaîne caractères

aws:nom d'utilisateur

Utilisé pour vérifier le nom d'utilisateur du demandeur.

Opérateur de chaîne caractères

Conditions spécifiques supportées pour les opérations sur les objets

Nom de la cléDescriptionAutorisations applicables

s3:x-amz-acl

Condition pour exiger des autorisations d'accès spécifiques lorsque l'utilisateur télécharge un objet.

s3:PutObject

s3:PutObjectAcl

s3:PutObjectVersionAcl

s3:x-amz-grant-permission

(pour les permissions explicites), où la permission peut être : lecture, écriture, lecture-acp, écriture-acp, contrôle total

Le propriétaire du Bucket peut ajouter des conditions en utilisant ces clés pour exiger certaines permissions.

s3:PutObject

s3:PutObjectAcl

s3:PutObjectVersionAcl

s3:x-amz-server-side-encryption

Oblige l'utilisateur à spécifier cet en-tête dans la requête.

s3:PutObject

s3:PutObjectAcl

s3:VersionId

Restreindre l'utilisateur à l'accès aux données uniquement pour une version spécifique de l'objet.

s3:PutObject

s3:PutObjectAcl

s3:DeleteObjectVersion

Conditions spécifiques prises en charge pour les opérations sur les Buckets

Nom de la cléDescriptionAutorisations applicables

s3:x-amz-acl

Définir une condition pour exiger des autorisations d'accès spécifiques lorsque l'utilisateur télécharge un objet.

s3:CreateBucket

s3:PutBucketAcl

s3:x-amz-grant-permission

(pour les permissions explicites), où la permission peut être : lecture, écriture, lecture-acp, écriture-acp, contrôle total

Le propriétaire du Bucket peut ajouter des conditions en utilisant ces clés pour exiger certaines permissions.

s3:CreateBucket

s3:PutBucketAcl

s3:prefix

Oblige l'utilisateur à spécifier cet en-tête dans la requête.

s3:PutObject

s3:PutObjectAcl

s3:delimiter

Exiger que l'utilisateur spécifie le paramètre de délimitation dans la requête Get Bucket (List Objects).

s3:PutObject

s3:PutObjectAcl

s3:DeleteObjectVersion

s3:max-keys

Limitez le nombre de clés que Object Storage Service renvoie en réponse à la requête Get Bucket (List Objects) en demandant à l'utilisateur de spécifier le paramètre max-keys.

s3:ListBucket

s3:ListBucketVersions

Dernière mise à jour