Контроль доступа к облачной информации на основе template_url - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я обучаюсь на одном из моих курсов, в которых используется AWS EMR. Каждый раз, когда я хочу использовать EMR, я должен запускать скрипт .sh (назовем его launch.sh), который в основном запускает шаблон облачной информации (скажем, он называется cf.json). В launch.sh есть переменная template_url, которая направляет ее в файл json в s3 (cf.json) с конечной точкой http.

У меня есть разрешение на запись и чтение в эту корзину (не удалять / прикреплять acl). И я успешно создал копию cf.json, и я называю ее cf2.json. Однако, когда я указываю launch.sh на cf2.json, я получаю ошибку «Отказано в разрешении».

Вы знаете, что вызывает это? Есть ли контроль разрешений относительно template_url в облачной информации?

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

An error occurred (AccessDenied) when calling the CreateStack operation: User:
 arn:aws:sts::12345678:assumed-role/CrossStack-IamRole-
ABCDEFGH/i-0123456 is not authorized to perform:
 cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-
1:12345678:stack/student-emr/*

Однако, когда я использую исходный URL, я получаю сообщение об успехе:

Creating EMR Cluster. This will take about 15 minutes...
{
    "StackId": "arn:aws:cloudformation:us-east-1:12345678:stack/student-emr/some-hash-id"
}

это скрипт в launch.sh

aws cloudformation create-stack --region $emr_region --stack-name $stackname \
    --template-url $template_url \
    --parameters ParameterKey=Owner,ParameterValue=$student_id \
    --role-arn $cf_role_arn

Я изменил значение $template_url Переменная

Примечание

Оба файла .json (cf.json & cf2.json) не имеют public-read ACL, и я подтвердил это, пытаясь скопировать файл с моего персонального компьютера, который возвращает 403 при попытке выполнить s3 cp.

1 Ответ

0 голосов
/ 10 сентября 2018

Я нашел это в документации AWS здесь https://aws.amazon.com/blogs/devops/aws-cloudformation-security-best-practices/

Вы можете использовать template_url в роли IAM

{
    "Version":"2012-10-17",
    "Statement":[{
        "Effect": "Deny",
        "Action": [
            "cloudformation:CreateStack",
            “cloudformation:UpdateStack”
        ],
        "Resource": "*",
        "Condition": {
            "StringNotEquals": {
                "cloudformation:TemplateURL": [
                    "https://s3.amazonaws.com/cloudformation-templates-us-east-1/IAM_Users_Groups_and_Policies.template"
                ]
            }
        }
    },
    {
        "Effect": "Deny",
        "Action": [
            "cloudformation:CreateStack",
            "cloudformation:UpdateStack"
        ],
        "Resource": "*",
        "Condition": {
            "Null": {
                "cloudformation:TemplateURL": "true"
            }
        }
    }]
}
...