AWS essaie vraiment de comprendre ce qui me manque ici. Je voudrais faire en sorte qu'un utilisateur IAM puisse télécharger des fichiers à partir d'un compartiment S3 - sans simplement les rendre totalement publics - mais l'accès me est refusé. Si quelqu'un peut voir ce qui se passe, je serai ravi.
Ce que j'ai fait jusqu'à présent:
- Créé un utilisateur appelé my-user (par exemple)
- Généré des clés d'accès pour l'utilisateur et les mettre dans ~ / .aws sur une instance EC2
- Création d'une stratégie de compartiment que j'espérais accorder un accès à mon utilisateur
- A exécuté la commande
aws s3 cp --profile my-user s3://my-bucket/thing.zip .
Politique de seau:
{
"Id": "Policy1384791162970",
"Statement": [
{
"Sid": "Stmt1384791151633",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/my-user"
}
}
]
}
Le résultat est A client error (AccessDenied) occurred: Access Denied
bien que je puisse télécharger en utilisant la même commande et les clés d'accès par défaut (compte root?).
J'ai également essayé d'ajouter une stratégie utilisateur. Bien que je ne sache pas pourquoi cela serait nécessaire, je pensais que cela ne ferait pas de mal, alors j'ai attaché cela à mon utilisateur.
{
"Statement": [
{
"Sid": "Stmt1384889624746",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Même résultat.
Lorsque j'ai rencontré le même problème, il s'est avéré qu'AWS devait activer le chiffrement côté serveur. Donc, la commande suivante a fonctionné avec succès pour moi:
la source
--sse aws:kms
d'utiliser le seau "par défaut" ...--sse-kms-key-id 0123-abc-etc
Toutefois, la partie qui n'est pas claire est que pour utiliser votre propre clé KMS, vous devez disposer de l'autorisation IAM sinon l'kms:GenerateDataKey
accès sera refusé.Je ne recommanderais pas l'option "Tout utilisateur AWS authentifié" mentionnée par James.
Cela ajoute une liste de contrôle d'accès au niveau du compartiment qui permet à tout compte AWS (pas uniquement à vos utilisateurs IAM) de répertorier / supprimer / modify-acls pour ce compartiment.
c'est-à-dire public en lecture / écriture pour toute personne ayant un compte aws.
la source
J'ai réussi à résoudre ce problème sans avoir à écrire de politiques - à partir de la console S3 (interface Web), j'ai sélectionné le compartiment et dans l'onglet autorisations, choisissez "Tout utilisateur AWS authentifié" et envoyez un ticket à toutes les cases.
UPDATE: comme indiqué dans les commentaires, "Tout utilisateur AWS authentifié" ne se limite pas aux utilisateurs de votre compte, mais à tous les utilisateurs authentifiés AWS. Veuillez les utiliser avec prudence.
la source
Même si vos stratégies IAM sont correctement configurées, vous pouvez toujours obtenir une erreur en
An error occurred (AccessDenied) when calling the <OPERATION-NAME> operation: Access Denied
raison des exigences de MFA (Authentification à plusieurs facteurs) sur vos informations d'identification. Cela peut vous prendre au dépourvu, car si vous êtes déjà connecté à la console AWS, vos informations d'identification semblent bien fonctionner et le message d'erreur d'autorisation refusée de aws cli n'est pas particulièrement utile.Il existe déjà de bonnes instructions sur la configuration de MFA avec aws cli:
Fondamentalement, vous devez connaître l'adresse de votre périphérique MFA et l'envoyer avec le code de votre périphérique pour obtenir un jeton temporaire.
la source
Je suis simplement allé sur l'interface Web, puis j'ai cliqué sur le compartiment, puis sur les autorisations, puis sur la stratégie. Quand je l'ai ouvert je viens de cliquer sur Supprimer. Je l'ai fait car je pense que c'était aussi la configuration.
Je suis retourné à la page s3 principale, puis j'ai cliqué sur le seau et essayé de le supprimer et cela a fonctionné.
même quand je l'ai fait par aws-cli en utilisant
En tout cas, c'est la chose qui a fonctionné pour moi. La stratégie sur les autorisations vous empêche de supprimer le compartiment.
la source
Une fois que j'ai eu cette erreur en essayant simplement de courir:
aws s3 cp s3://[bucketName]/[fileName] .
dans un dossier où je n'avais pas les autorisations. C'est idiot, mais assurez-vous que vous êtes le propriétaire du dossier dans lequel vous vous trouvez avant de poursuivre!
la source
Le problème se pose lorsque vous insérez des noms d'objet ou de ressource non valides. J'avais le même problème avec boto3 (dans mon cas, il s'agissait d'un nom de compartiment non valide).
la source