4

Je fais des recherches sur l'utilisation de S3. Ce que je voudrais accomplir est fondamentalement contrôler l'accès aux objets dans le compartiment S3 de la même manière que sur le système de fichiers mais pour les utilisateurs fédérés IAM.Restriction de l'accès à Amazon S3 au niveau de l'objet pour les utilisateurs IAM fédérés

Supposons que le scénario suivant

Bucket 
    |- File 1.txt -> ACL: Read: User1; Read: User 2 
    |- File 2.txt -> ACL: Read: Everyone; Read, Write: User 2 
    |- File 3.txt -> ACL: Read: Group 1; Read, Write: User 2 

Ce type de configuration peut être réalisée à l'aide ACLs et Amazon utilisateurs et des groupes « indigènes ». D'un autre côté, pour l'utilisateur fédéré, la seule chose que j'ai pu trouver était de générer un jeton temporaire avec une stratégie de compartiment assignée.

Si je comprends bien, seau politiques travaux en sens inverse de l'ACL (définit à quels objets utilisateur ont accès, alors que l'ACL définit qui ont accès à l'objet)

Ma question est. Est-il possible d'affecter un utilisateur fédéré dans ACL (ou de réaliser d'une autre manière le même objectif pour les utilisateurs fédérés)?

Je voudrais achive le même comportement que sur le système de fichiers où vous avez des utilisateurs dans les groupes et sur les objets que vous MARQUAGE quels groupes ont accès à leur

En supposant que le champ « x-amz-méta- seclevels 'contient des groupes qui ont accès au fichier (Group1, Group2, admin3rdfloor), avec la politique présentée (ce qui n'est pas correct, mais je voudrais décrire ce qui est dans mon esprit) attaché à IAM Federated user, je pourrais accorder cet accès utilisateur à tous les fichiers qui contient la valeur admin3rdfloor dans le champ x-amz-meta-seclevels.

{ 
'Statement': [ 
    { 
     'Sid': 'PersonalBucketAccess', 
     'Action': [ 
      's3:GetObject' 
      ], 
     'Effect': 'Allow', 
     'Resource': 'arn:aws:s3:::MyBucketName' 
     'Condition':{ 
     'StringLike':{ 
      's3:x-amz-meta-seclevels':'admin3rdfloor' 
     } 
    } 

    } 
] 

}

Est-ce réalisable en aucune façon?

Merci de votre aide à l'avance!

Répondre

2

Si je comprends bien votre configuration désirée, AWS aurait peut-être vient de publier une fonction permettant ce scénario, voir Variables in AWS Access Control Policies:

AWS Identity and Access Management (IAM) vous permet de créer des politiques qui contrôlent l'accès aux API de service AWS et des ressources. Aujourd'hui, nous étendons le langage de stratégie d'accès AWS pour inclure la prise en charge des variables . Policy variables facilite la création et la gestion des règles générales qui incluent un contrôle d'accès individualisé.

est ici la politique exemple fourni pour les utilisateurs réguliers IAM:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": ["s3:ListBucket"], 
     "Effect": "Allow", 
     "Resource": ["arn:aws:s3:::myBucket"], 
     "Condition":{"StringLike": 
     {"s3:prefix":["home/${aws:username}/*"]}} 
    }, 
    { 
     "Action":["s3:GetObject", "s3:PutObject", "s3:DeleteObject*"], 
     "Effect":"Allow", 
     "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}", 
     "arn:aws:s3:::myBucket/home/${aws:username}/*"] 
    } 
] 
} 

Alors que le ${aws:username} inclus dans cet exemple ne sont pas disponibles pour les utilisateurs fédérés (ou rôles pris en charge), il y a un autre ${aws:userid} variable, sera substitué par account:caller-specified-name pour la ${aws:principaltype}FederatedUser, respectivement - s'il vous plaît consulter le tableau dans les Request Information That You Can Use for Policy Variables pour plus de détails sur la façon dont ces variables sont substituées dependin g sur le type principal.

+0

Si je comprends bien cette politique, je donne l'accès $ {aws: username} à tous les fichiers dans myBucket/home/$ {aws: username}/* qui ne résout pas mon problème. Dans mon cas, tous les fichiers sont dans un seul compartiment sans dossiers. Structure totalement plate. Je voudrais générer une stratégie pour les utilisateurs fédérés qui permettra à cet utilisateur d'accéder uniquement à un sous-ensemble de fichiers basés sur des ACL ou d'autres métadonnées personnalisées pouvant être mises en correspondance par une stratégie. – Midi

+0

Avez-vous trouvé une solution? J'ai le même problème. – Arash

+0

@Arash: En fait, je me suis retrouvé avec la solution de créer une URL prédéfinie chaque fois que l'utilisateur accède au fichier. Nous stockons des métadonnées de fichiers dans SQL et avons un point de terminaison où l'utilisateur demande le fichier en spécifiant ses métadonnées. Nous vérifions s'il a les droits appropriés, et si tout va bien, nous le redirigeons vers l'URL prédéfinie générée. – Midi