Управляемая политика для роли в стеке формирования облаков AWS - PullRequest
0 голосов
/ 11 июня 2018

Используя AWS, я создаю облачное образование , определяющее стек:

  1. Управляемая политика с именем MyPolicy
  2. Роль с именем MyRoleэто должно прикрепить эту политику

Стек будет создан администратором;и после создания цель состоит в том, чтобы позволить (извне стека) некоторым пользователям принять MyRole.

Мой вопрос: Как определить роль для присоединения этой политики?


На странице справки AWS свойств роли предлагается использовать ManagedPolicyArns, но я получаю различные ошибки в зависимости от того, как я ссылаюсь на MyPolicy:

Если я использую функцию GetAtt для получения политики arn, я получаю сообщение об ошибке при проверке шаблона:

"ManagedPolicyArns": [ { "Fn::GetAtt" : [ "MyPolicy", "Arn" ] } ]

Ошибка шаблона: ресурс MyPolicy не поддерживает тип атрибутаАрн в Fn :: GetAtt


И если я использую функцию Join для построения политики arn, я получаю ошибку при создании роли.

"ManagedPolicyArns": [ { "Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref": "AWS::AccountId" }, ":policy/", { "Ref": "MyPolicy" } ] ] } ]

ARN arn: aws: iam :: aws: policy / arn: aws: iam :: «my-account-id»: policy / MyPolicy недействителен.(Сервис: AmazonIdentityManagement; Код состояния: 400; Код ошибки: InvalidInput; Идентификатор запроса: «an-id»)


Ниже приведено определение стека с использованием формата JSON:

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Resources" : {
        "MyPolicy" : {
            "Type": "AWS::IAM::ManagedPolicy",
            "Properties": {
                "ManagedPolicyName" : "MyPolicy",
                "PolicyDocument" : {
                    "Version": "2012-10-17",
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": [ "s3:*" ],
                            "Resource": "arn:aws:s3:::the-bucket"
                        }
                    ]
                }
            }
        },

        "MyRole" : {
            "Type": "AWS::IAM::Role",
            "RoleName": "MyRole",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": { "AWS": {"Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref": "AWS::AccountId" }, ":root" ] ] } },,
                        "Action": [ "sts:AssumeRole" ]
                    }
                ]
            },
            "ManagedPolicyArns": [
                { "Fn::GetAtt" : [ "MyPolicy", "Arn" ] }
            ]
        }
    }
}

1 Ответ

0 голосов
/ 11 июня 2018

{"Ref": "MyPolicy"} вернет ARN управляемой политики, созданной вашим стеком.Ваше сообщение об ошибке указывает на это.Также проверьте эту документацию AWS.

...