Comment obtenir L'ID canonique de l'utilisateur pour ajouter une permission S3

je veux ajouter une permission S3 pour un utilisateur spécifique. La console AWS me demande l'ID canonique de l'utilisateur. J'ai utilisé la commande AWS CLI aws iam list-users pour récupérer la liste des utilisateurs, mais il n'y avait pas de champ "Canonical ID", et le "User ID" n'est pas reconnu, me donnant un message "Invalid ID". J'ai essayé aussi avec ARN et ça n'a pas marché.

17
demandé sur jigarzon 2017-07-18 17:46:48

5 réponses

il y a deux solutions que vous pouvez utiliser pour accorder à cet utilisateur l'accès à un seau Amazon S3 et du contenu

  1. Utilisateur IAM Politiques

    { "Version": "2012-10-17", "Id": "9758b97b-6fe0-4ba3-b5bd-3d0fe8896a83", "Statement": [{ "Sid": "AllowMyUser", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR bucket name /*" }] }

  2. Politique De Seau

    { "Version": "2012-10-17", "Id": "9758b97b-6fe0-4ba3-b5bd-3d0fe8896a83", "Statement": [{ "Sid": "AllowMyUser", "Effect": "Allow", "Principal": { "AWS": "YOUR IAM User AWSId" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR bucket name /*" }] }

AWS CLIIAM user renvoie l'identifiant qui dans le documentation API états peuvent être utilisés dans S3

Par exemple, vous pourrait créer un utilisateur IAM nommé David. Votre entreprise utilise Amazon S3 et a un seau avec des dossiers pour chaque employé; le seau a une politique basée sur les ressources (une politique de seau) qui permet aux utilisateurs d'accéder seulement leurs propres dossiers dans le seau. Supposons que L'employé nommé David quitte votre entreprise et que vous supprimiez l'utilisateur IAM correspondant. Mais plus tard, un autre employé nommé David commence et vous créez un nouvel utilisateur IAM nommé David. Si la Politique de seau spécifie L'utilisateur IAM nommé David, la Politique pourrait octroyer le nouveau David accès à l'information dans le compartiment Amazon S3 qui a été laissé par l'ancien David.

https://docs.aws.amazon.com/IAM/latest/APIReference/API_User.html

7
répondu strongjz 2017-12-12 16:39:38

pour accorder des permissions à un utilisateur IAM sur un seau, vous aurez besoin de créer une politique de seau - qui est un document JSON. L'option" Accès pour d'autres comptes AWS " dans L'ACL permet d'accorder l'accès à d'autres comptes racine AWS (entièrement séparés), et non pas d'accorder l'accès aux utilisateurs IAM à l'intérieur de votre propre compte racine.

Création/Modification d'une Politique

pour accéder à la Politique de bucket, passez à un bucket dans la console web S3. Là, vous verrez Vue d'ensemble/propriétés/Permissions/onglets de gestion. Sous Permissions il y a un sous-onglet appelé "Bucket Policy". Au bas de la page de politique de seau il y a un lien vers un "générateur de politique", qui générera le JSON pour vous. (ou le lien direct est:http://awspolicygen.s3.amazonaws.com/policygen.html)

identifier un utilisateur IAM pour attribuer des droits à

pour identifier l'utilisateur IAM auquel vous voulez accorder des permissions, vous utiliserez une ressource ARN (Amazon Resource Nom.) Le format ARN pour les utilisateurs IAM est le suivant:" arn:aws: iam:: {Account-ID}: user/{Username} " (notez que les accolades ne font pas partie du format). Un exemple de IAM ARN ressemble à ceci:arn:aws:iam:: 100123456789: user / Daniel

pour obtenir votre ID de compte numérique, inscrivez - vous en tant qu'utilisateur root et cliquez sur votre nom d'utilisateur dans le coin supérieur droit de la page et choisissez "Mon Compte" (ce qui vous amène à https://console.aws.amazon.com/billing/home?#/account). Le le numéro de compte est indiqué sous" Paramètres du compte " en haut de la page.

branchez cette ARN utilisateur dans le champ" Principal " du générateur de politique, et choisissez quelle(s) action (s) accorder à l'utilisateur à partir de la liste déroulante.

spécifier quoi accorder les permissions sur

pour accorder des permissions à un seau, ou un ensemble de fichiers (objets) dans un seau, vous devez entrer une ARN qui identifie le seau, ou un sous-ensemble d'objets dans le seau dans le " Amazon Nom de la Ressource " champ (e.g. si j'avais un seau appelé Daniels-stuff et un dossier dans ce seau appelé images que je voulais accorder l'accès alors je pourrais fournir un ARN tel que arn:aws:s3::: daniels-stuff / images/*

cliquez sur " Ajouter une déclaration "lorsque vous avez ajouté l'information nécessaire et appuyez ensuite sur"Générer une politique". REMARQUE Vous pouvez mettre plusieurs énoncés (cession de droits d'accès) dans la même politique.

Plus Info

enfin, il y a un bon abécédaire aux politiques de S3 bucket à https://brandonwamboldt.ca/understanding-s3-permissions-1662/ qui comprend quelques exemples de politiques.

bonne chance (Bien que je suppose que vous avez probablement résolu votre problème maintenant, d'autres peuvent trouver cela utile).

10
répondu Daniel Scott 2018-01-11 01:44:45

l'ID canonique de l'utilisateur est le plus facile à trouver en appelant, comme l'utilisateur dont vous voulez trouver L'ID, liste aws s3api-seaux:

aws --profile PROD s3api list-buckets
{
    "Owner": {
        "DisplayName": "a-display-name",
        "ID": "a-64?-char-hex-string"  <<-- this HERE is the canonical user ID
    },
    "Buckets": [
        {
            "CreationDate": "2018-03-28T21:50:56.000Z",
            "Name": "bucket-1"
        },
        {
            "CreationDate": "2018-03-22T14:08:48.000Z",
            "Name": "bucket-2"
        }
    ]
}

avec cette ID, vous pouvez alors appeler le s3api pour accorder l'accès-eg pour donner l'accès en lecture-comme ceci:

aws --profile OTHER s3api put-object-acl \
    --bucket bucket-3 \
    --key path/to/file \
    --grant-read id="the-64-char-hex"
3
répondu Enda Farrell 2018-04-03 14:44:02

pour obtenir l'ID canonique, une des façons les plus simples est D'utiliser CLI et exécuter aws s3api list-buckets la commande. Vous obtiendrez L'ID dans la sortie.

Il y a aussi d'autres moyens d'obtenir l'ID canonique et sont clairement décrits dans les documents de l'aws:https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html

liste-seaux aws docs: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html

2
répondu Rathan 2018-07-11 09:19:03

Il y a une autre façon de trouver votre nom canonique dans le cas où vous n'êtes pas l'utilisateur ROOT,

vous devrez vous connecter en utilisant CLI (en utilisant votre clé d'accès et votre clé secrète) après tapez juste

aws iam liste des utilisateurs

pour afficher les informations suivantes

{
    "Users": [
        {
            "UserName": "yoda",
            "PasswordLastUsed": "2018-02-24T17:47:15Z",
            "CreateDate": "2018-02-11T02:23:11Z",
            "UserId": "AIDASDY9WSX6QD",    <== Canonical Name
            "Path": "/",
            "Arn": "arn:aws:iam::7783412456453:user/yoda"
        }
    ]

Remarque: l'ID de L'Utilisateur et de l'ARN originaux ont été modifiés :-)

j'espère que cela aidera

Neo

0
répondu Neo 2018-03-14 01:22:12