amazon-s3 – ¿Qué causa el acceso denegado al usar aws cli para descargar desde Amazon S3?

Pregunta:

Realmente estoy dando vueltas en AWS tratando de averiguar qué me estoy perdiendo aquí. Me gustaría que un usuario de IAM pueda descargar archivos de un depósito de S3, sin solo hacer que los archivos sean totalmente públicos, pero se me niega el acceso. Si alguien puede detectar lo que está pasando, me alegrará.

Lo que he hecho hasta ahora:

  • Creó un usuario llamado my-user (por ejemplo)
  • Generaron claves de acceso para el usuario y las pusieron en ~ / .aws en una instancia EC2
  • Creé una política de depósito que esperaba que otorgara acceso a mi usuario
  • Ejecutó el comando aws s3 cp --profile my-user s3://my-bucket/thing.zip .

Política de cangilones:

{
  "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"
      }
    }
  ]
}

El resultado es A client error (AccessDenied) occurred: Access Denied aunque puedo descargar usando el mismo comando y las claves de acceso predeterminadas (¿cuenta raíz?).

También intenté agregar una política de usuario. Si bien no sé por qué sería necesario, pensé que no estaría de más, así que adjunté esto a mi usuario.

{
  "Statement": [
    {
      "Sid": "Stmt1384889624746",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

Mismos resultados.

Respuesta:

Yo también estaba luchando con esto, pero encontré una respuesta aquí https://stackoverflow.com/a/17162973/1750869 que me ayudó a resolver este problema. Volviendo a publicar la respuesta a continuación.


No tienes que abrir los permisos a todo el mundo. Utilice las políticas de depósito a continuación sobre el origen y el destino para copiar de un depósito de una cuenta a otra con un usuario de IAM.

Depósito desde el que copiar: SourceBucket

Depósito para copiar – DestinationBucket

ID de cuenta de AWS de origen: XXXX – XXXX-XXXX

Usuario de IAM de origen: src – iam-user

La siguiente política significa – el usuario de IAM – XXXX – XXXX-XXXX: src – iam-user tiene privilegios s3: ListBucket y s3: GetObject en SourceBucket / * y s3: ListBucket y s3: privilegios PutObject en DestinationBucket / *

En SourceBucket, la política debería ser como:

{
"Id": "Policy1357935677554",
"Statement": [
    {
        "Sid": "Stmt1357935647218",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::SourceBucket",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
    },
    {
        "Sid": "Stmt1357935676138",
        "Action": ["s3:GetObject"],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: SourceBucket/*",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
   }
]
}

En el DestinationBucket, la política debe ser:

{
"Id": "Policy1357935677554",
"Statement": [
    {
        "Sid": "Stmt1357935647218",
        "Action": [
            "s3:ListBucket"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: DestinationBucket",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
    },
    {
        "Sid": "Stmt1357935676138",
        "Action": ["s3:PutObject"],
        "Effect": "Allow",
        "Resource": "arn:aws:s3::: DestinationBucket/*",
        "Principal": {"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/src–iam-user"}
   }
]
}

El comando que se ejecutará es s3cmd cp s3://SourceBucket/File1 s3://DestinationBucket/File1

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım