amazon s3 - use - Obtendo acesso negado ao chamar a operação PutObject com permissão no nível do bucket




s3 policy specific bucket (4)

Segui o exemplo em http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3 para saber como conceder acesso a um usuário a apenas um intervalo.

Testei a configuração usando o plugin W3 Total Cache Wordpress. O teste falhou.

Eu também tentei reproduzir o problema usando

aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/

e que falhou com

upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied

Por que não consigo carregar no meu balde?


Caso isso ajude mais alguém, no meu caso, eu estava usando um CMK (funcionou bem usando a tecla aws / s3 padrão)

Eu tive que entrar na minha definição de chave de criptografia no IAM e adicionar o usuário programático conectado ao boto3 à lista de usuários que "podem usar essa chave para criptografar e descriptografar dados de aplicativos e ao usar os serviços da AWS integrados ao KMS".


Eu estava apenas batendo minha cabeça contra uma parede, tentando fazer com que os uploads do S3 funcionassem com arquivos grandes. Inicialmente, meu erro foi:

An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied

Então tentei copiar um arquivo menor e obtive:

An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Eu poderia listar os objetos corretamente, mas não poderia fazer mais nada, mesmo tendo as permissões s3:* na minha política de Funções. Acabei reformulando a política para isso:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "*"
        }
    ]
}

Agora eu posso fazer upload de qualquer arquivo. Substitua my-bucket pelo nome do seu bucket. Espero que isso ajude alguém que está passando por isso.


Eu estava tendo um problema semelhante. Eu não estava usando o material da ACL, então não precisava do s3:PutObjectAcl .

No meu caso, eu estava fazendo (no Serverless Framework YML):

- Effect: Allow
  Action:
    - s3:PutObject
  Resource: "arn:aws:s3:::MyBucketName"

Ao invés de:

- Effect: Allow
  Action:
    - s3:PutObject
  Resource: "arn:aws:s3:::MyBucketName/*"

O que adiciona um /* ao final do ARN do bucket.

Espero que isto ajude.


Eu tive um problema semelhante ao fazer o upload para um bucket S3 protegido com criptografia KWS. Eu tenho uma política mínima que permite a adição de objetos sob uma chave s3 específica.

Eu precisava adicionar as seguintes permissões KMS à minha política para permitir que a função coloque objetos no bucket. (Pode ser um pouco mais do que o estritamente necessário)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:ListKeys",
                "kms:GenerateRandom",
                "kms:ListAliases",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kms:ImportKeyMaterial",
                "kms:ListKeyPolicies",
                "kms:ListRetirableGrants",
                "kms:GetKeyPolicy",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:ListResourceTags",
                "kms:ReEncryptFrom",
                "kms:ListGrants",
                "kms:GetParametersForImport",
                "kms:TagResource",
                "kms:Encrypt",
                "kms:GetKeyRotationStatus",
                "kms:GenerateDataKey",
                "kms:ReEncryptTo",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:<MY-REGION>:<MY-ACCOUNT>:key/<MY-KEY-GUID>"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
            <The S3 actions>
            ],
            "Resource": [
                "arn:aws:s3:::<MY-BUCKET-NAME>",
                "arn:aws:s3:::<MY-BUCKET-NAME>/<MY-BUCKET-KEY>/*"
            ]
        }
    ]
}