Как разрешить доступ AWS из пакетного задания к S3 на другом аккаунте - PullRequest
1 голос
/ 09 апреля 2019

У меня есть пакетное задание в учетной записи A и корзина в учетной записи B.Когда моя работа запрашивает s3:GetBucketLocation, она возвращает Access Denied.

Я установил такие разрешения для моей пакетной работы (учетная запись A):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-in-account-B",
                "arn:aws:s3:::bucket-in-account-B/*"
            ]
        }
    ]
}

и разрешения корзины(учетная запись B):

{
    "Version": "2012-10-17",
    "Statement": [
        ...,
        {
            "Sid": "123",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{numbers}}:role/{{name}}"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-in-account-B",
                "arn:aws:s3:::bucket-in-account-B/*"
            ]
        }
    ]
}

Эти разрешения не работают.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

вы пытаетесь получить доступ к корзине из пакетного задания после его запуска или пытаетесь подключить события посадки файла корзины для запуска пакетных заданий ???

Я предполагаю, что это первое. в этом случае политики корзины должно быть достаточно для предоставления доступа к нескольким учетным записям. это может быть проблема с фактическим арн, который вы помещаете в политику корзины.

это не может быть "arn: aws: iam :: {{numbers}}: роль / {{name}}" ... вам, возможно, придется поместить в него поле предположения или добавить профиль экземпляра arn. это зависит. как вы настроили работу. где работа получает свои полномочия. из роли IAM, прикрепленной к базовому экземпляру (через профиль экземпляра), или роли задачи ecs (в основном, для вашего пакетного контейнера)

внутри вашей работы вы можете сделать что-то вроде

$ aws sts get-caller-identity

попытаться предоставить ведро доступ к arn, напечатанному из этой команды, минус имя сеанса (последний бит арна)

0 голосов
/ 09 апреля 2019

Политика группы B должна включать разрешение для пользователя из учетной записи A на доступ к нему, что-то вроде

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AccountQ:user/AccountAUserName"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::AccountBBucketName/*"
            ]
        }
    ]
}
...