Доступ S3 запрещен при использовании команды COPY с ролью IAM - PullRequest
0 голосов
/ 28 мая 2019

У меня есть следующая команда копирования:

copy ink.contact_trace_records
from 's3://mybucket/mykey'
iam_role 'arn:aws:iam::accountnum:role/rolename'
json 'auto';

Где роль имеет полный доступ к S3 и полный доступ к политикам RS (я знаю, что это не очень хорошая идея, но я просто теряюэто здесь :) ).К кластеру прилагается роль.Кластер имеет расширенную маршрутизацию VPC.Я получаю следующее:

[2019-05-28 14:07:34] [XX000][500310] [Amazon](500310) Invalid operation: S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid 370F75618922AFC0,ExtRid dp2mcnlofFzt4dz00Lcm188/+ta3OEKVpuFjnZSYsC0pJPMiULk7I6spOpiZwXc04VVRdxizIj4=,CanRetry 1
[2019-05-28 14:07:34] Details:
[2019-05-28 14:07:34] -----------------------------------------------
[2019-05-28 14:07:34] error:  S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid 370F75618922AFC0,ExtRid dp2mcnlofFzt4dz00Lcm188/+ta3OEKVpuFjnZSYsC0pJPMiULk7I6spOpiZwXc04VVRdxizIj4=,CanRetry 1
[2019-05-28 14:07:34] code:      8001
[2019-05-28 14:07:34] context:   S3 key being read : s3://redacted
[2019-05-28 14:07:34] query:     7794423
[2019-05-28 14:07:34] location:  table_s3_scanner.cpp:372
[2019-05-28 14:07:34] process:   query3_986_7794423 [pid=13695]
[2019-05-28 14:07:34] -----------------------------------------------;

Что мне здесь не хватает?Кластер имеет полный доступ к S3, он даже не в пользовательском VPC, а по умолчанию.Мысли?

1 Ответ

1 голос
/ 30 мая 2019

Проверка владельца объекта. Вероятно, объект принадлежит другой учетной записи. Это является причиной для S3 403 во многих ситуациях, когда объекты не могут быть доступны с помощью роли или учетной записи с полными разрешениями. Типичным показателем является то, что вы можете list объект (ы), но не можете get или head их.

В следующем примере я пытаюсь получить доступ к журналу аудита Redshift из 2-й учетной записи. Учетная запись 012345600000 получает доступ к корзине, принадлежащей 999999999999, используя следующую политику:

{"Version": "2012-10-17",
 "Statement": [
        {"Action": [
                "s3:Get*",
                "s3:ListBucket*"
            ],
          "Effect": "Allow",
          "Resource": [
                "arn:aws:s3:::my-audit-logs",
                "arn:aws:s3:::my-audit-logs/*"
            ],
          "Principal": {
                "AWS": [
                    "arn:aws:iam::012345600000:root"
                ]}}]
 }

Теперь я пытаюсь перечислить (s3 ls), а затем скопировать (s3 cp) один объект журнала:

aws --profile 012345600000 s3 ls s3://my-audit-logs/AWSLogs/999999999999/redshift/us-west-2/2019/05/25/
# 2019-05-28 14:49:46        376 …connectionlog_2019-05-25T19:03.gz
aws --profile 012345600000 s3 cp s3://my-audit-logs/AWSLogs/999999999999/redshift/us-west-2/2019/05/25/…connectionlog_2019-05-25T19:03.gz ~/Downloads/…connectionlog_2019-05-25T19:03.gz
# fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

Затем я проверяю владение объектом по учетной записи, которой принадлежит корзина.

aws --profile 999999999999 s3api get-object-acl --bucket my-audit-logs --key AWSLogs/999999999999/redshift/us-west-2/2019/05/25/…connectionlog_2019-05-25T19:03.gz
# "Owner": {
#    "DisplayName": "aws-cm-prod-auditlogs-uswest2", ## Not my account!
#    "ID": "b2b456ce30a967fb1877b3c9594773ae0275fee248e3ebdbff43d66907b89144"
# },

Затем я копирую объект в ту же корзину с --acl bucket-owner-full-control. Это делает меня владельцем нового объекта. Обратите внимание на измененный префикс SharedLogs/.

aws --profile 999999999999 s3 cp \ 
   s3://my-audit-logs/AWSLogs/999999999999/redshift/us-west-2/2019/05/25/…connectionlog_2019-05-25T19:03.gz \
   s3://my-audit-logs/SharedLogs/999999999999/redshift/us-west-2/2019/05/25/…connectionlog_2019-05-25T19:03.gz \
   --acl bucket-owner-full-control

Теперь я могу загрузить (или загрузить в Redshift!) Новый объект, к которому открыт общий доступ, из того же сегмента.

aws --profile 012345600000 s3 cp s3://my-audit-logs/SharedLogs/999999999999/redshift/us-west-2/2019/05/25/…connectionlog_2019-05-25T19:03.gz ~/Downloads/…connectionlog_2019-05-25T19:03.gz
# download: …
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...