자체 관리형 권한 부여 - AWS CloudFormation

자체 관리형 권한 부여

이 주제에서는 StackSets에서 자체 관리형 권한을 사용하여 계정 및 AWS 리전 전체에 배포하는 경우 필요한 IAM 서비스 역할을 생성하는 방법에 대한 지침을 제공합니다. 이러한 역할은 스택 세트를 관리하는 계정과 스택 인스턴스를 배포하는 계정 간에 신뢰 관계를 설정하는 데 필요합니다. 이 권한 모델을 사용하여 StackSets에서는 IAM 역할을 생성할 수 있는 권한이 있는 모든 AWS 계정에 배포할 수 있습니다.

서비스 관리형 권한을 사용하려면 AWS Organizations를 사용하여 신뢰할 수 있는 액세스 활성화 섹션을 대신 참조하세요.

자체 관리형 권한 개요

자체 관리형 권한으로 스택 세트를 생성하기 전에 각 계정에 IAM 서비스 역할을 생성해야 합니다.

기본 단계는 다음과 같습니다.

  1. 어느 AWS 계정이 관리자 계정인지 결정합니다.

    이 관리자 계정에 스택 세트가 생성됩니다. 대상 계정은 스택 세트에 속하는 개별 스택이 생성되는 계정입니다.

  2. 스택 세트에 대한 권한 구조를 결정합니다.

    가장 단순한 (그리고 가장 허용적인) 권한 구성은 관리자 계정의 모든 사용자 및 그룹에게 해당 계정을 통해 관리하는 모든 스택 세트를 생성하고 업데이트하는 기능을 제공하는 것입니다. 더욱 세분화된 제어가 필요한 경우 다음을 지정할 권한을 설정할 수 있습니다.

    • 대상 계정의 스택 세트 작업을 수행할 수 있는 사용자 및 그룹.

    • 스택 세트에 포함될 수 있는 리소스 사용자 및 그룹.

    • 특정 사용자 및 그룹에서 수행할 수 있는 스택 세트 작업.

  3. 관리자 및 대상 계정에 필요한 IAM 서비스 역할을 생성하여 원하는 권한을 정의합니다.

    구체적으로 필요한 역할 2개는 다음과 같습니다.

    • AWSCloudFormationStackSetAdministrationRole - 이 역할은 관리자 계정에 배포됩니다.

    • AWSCloudFormationStackSetExecutionRole – 이 역할은 스택 인스턴스를 생성하는 모든 계정에 배포됩니다.

관리자 계정의 모든 사용자에게 모든 대상 계정의 스택을 관리할 권한 제공

이 섹션에서는 관리자 계정의 모든 사용자와 그룹이 모든 대상 계정에서 스택 세트 작업을 허용하는 권한을 설정하는 방법을 보여줍니다. 관리자 및 대상 계정에 필요한 IAM 서비스 역할을 생성하는 과정을 안내합니다. 관리자 계정에 속한 누구나 모든 대상 계정에서 스택을 생성, 업데이트 또는 삭제할 수 있습니다.

이런 방식으로 권한을 구조화하면 사용자가 스택 세트를 생성 또는 업데이트할 때 관리자 역할을 전달하지 않습니다.

관리자 계정과 대상 계정 간의 신뢰 관계를 설정합니다. 관리자 계정의 모든 사용자는 어떤 스택 세트든 생성할 수 있습니다.
Administrator account

관리자 계정에서 AWSCloudFormationStackSetAdministrationRole이라는 이름의 IAM 역할을 생성합니다.

https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml에서 사용할 수 있는 CloudFormation 템플릿에서 스택을 생성하면 가능합니다.

예 권한 정책 예

이전 템플릿에서 생성한 관리 역할에는 다음 권한 정책이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }
예 신뢰 정책 예제 1

이전 템플릿에는 서비스에 관리자 역할을 사용할 수 있는 권한과 역할에 연결된 권한을 부여하는 다음 신뢰 정책도 포함되어 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
예 신뢰 정책 예제 2

기본적으로 비활성화되어 있는 리전에 상주하는 대상 계정에 스택 인스턴스를 배포하려면 해당 리전의 리전 서비스 보안 주체도 포함해야 합니다. 기본적으로 비활성화된 각 리전에는 자체 리전 서비스 보안 주체가 있습니다.

다음 신뢰 정책 예제는 기본적으로 비활성화되어 있는 리전인 아시아 태평양(홍콩) 리전(ap-east-1)의 관리자 역할을 사용할 수 있는 권한을 서비스에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "cloudformation.amazonaws.com", "cloudformation.ap-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

자세한 내용은 기본적으로 비활성화된 리전과 관련된 스택 세트 작업 수행 단원을 참조하십시오. 리전 코드 목록은 AWS 일반 참조 안내서의 리전 엔드포인트를 참조하세요.

Target accounts

각 대상 계정에서 관리자 계정을 신뢰하는 AWSCloudFormationStackSetExecutionRole이라는 이름의 서비스 역할을 생성합니다. 역할에는 정확한 이름이 있어야 합니다. https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml에서 사용할 수 있는 CloudFormation 템플릿에서 스택을 생성하면 가능합니다. 이 템플릿을 사용하면 대상 계정과 신뢰 관계가 있어야 하는 관리자 계정의 계정 ID를 제공하라는 메시지가 표시됩니다.

중요

이 템플릿은 관리자 액세스 권한을 부여하므로 유의하십시오. 템플릿을 사용하여 대상 계정 실행 역할을 생성한 후에는 정책 설명에 있는 권한의 범위를 StackSets를 사용하여 생성하는 리소스의 유형으로 지정해야 합니다.

대상 계정 서비스 역할에는 CloudFormation 템플릿에서 지정된 작업을 수행할 수 있는 권한이 필요합니다. 예를 들어, 템플릿이 S3 버킷을 생성할 경우 S3에 대한 새 객체를 생성할 수 있는 권한이 필요합니다. 대상 계정에는 항상 스택의 생성, 업데이트, 삭제, 설명을 비롯한 전체 CloudFormation 권한이 필요합니다.

예 권한 정책 예 1

이 템플릿에 의해 생성된 역할을 사용하면 대상 계정에 대해 다음 정책을 사용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
예 권한 정책 예 2

다음 예는 스택 세트가 작동하기 위한 최소 권한이 포함된 정책 설명을 보여줍니다. 대상 계정에서 CloudFormation 이외의 서비스에서 리소스를 사용하는 스택을 생성하려면 각 대상 계정에 대한 AWSCloudFormationStackSetExecutionRole 정책 설명에 해당 서비스 작업 및 리소스를 추가해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
예 신뢰 정책 예제

다음 신뢰 관계는 템플릿에 의해 생성됩니다. 관리자 계정의 ID는 admin_account_id로 표시됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }

관리자 계정의 특정 역할을 신뢰하도록 기존 대상 계정 실행 역할의 신뢰 관계를 구성할 수 있습니다. 관리자 계정에서 역할을 삭제하고 대체할 새 역할을 생성하는 경우, 이전 예에서 admin_account_id로 표현된 새 관리자 계정 역할과의 대상 계정 신뢰 관계를 구성해야 합니다.

스택 세트 작업에 대한 고급 권한 옵션 설정

사용자 및 그룹이 단일 관리자 계정을 통해 생성한 스택 세트에 대한 더욱 세분화된 제어가 필요한 경우 IAM 역할을 사용하여 다음을 지정할 수 있습니다.

  • 대상 계정의 스택 세트 작업을 수행할 수 있는 사용자 및 그룹.

  • 스택 세트에 포함될 수 있는 리소스 사용자 및 그룹.

  • 특정 사용자 및 그룹에서 수행할 수 있는 스택 세트 작업.

특정 대상 계정의 스택 세트 작업을 수행할 수 있는 사용자 제어

사용자 지정 관리 역할을 사용하여 어떤 대상 계정에서 어떤 사용자 및 그룹이 스택 세트 작업을 수행할 수 있는지 제어합니다. 어떤 대상 계정에서 어떤 관리자 계정의 사용자가 스택 세트 작업을 수행할 수 있는지를 제어하고 싶을 수 있습니다. 이를 위해 관리자 계정 자체 내에 AWSCloudFormationStackSetAdministrationRole 서비스 역할을 생성하는 대신 각 대상 계정과 특정 사용자 지정 관리자 역할(관리자 계정 자체가 아닌) 간에 신뢰 관계를 생성합니다. 그런 다음 특정 대상 계정에서 스택 세트 작업을 수행할 때 사용자 지정 관리 역할을 사용하도록 특정 사용자 및 그룹을 활성화합니다.

예를 들어 관리자 계정 내에 역할 A와 역할 B를 생성할 수 있습니다. 역할 A에 계정 8을 통해 대상 계정 1에 액세스할 수 있는 권한을 부여할 수 있습니다. 또한 역할 B에 계정 16을 통해 대상 계정 9에 액세스할 수 있는 권한을 부여할 수 있습니다.

사용자 지정 관리 역할과 대상 계정 간의 신뢰 관계를 설정합니다. 이제 사용자는 스택 세트를 생성할 때 해당 역할을 전달합니다.

필요한 권한을 설정하려면 사용자 지정 관리 역할을 정의하고, 대상 계정에 대한 서비스 역할을 생성하며, 스택 세트 작업을 수행할 때 사용자 지정 관리 역할을 전달할 수 있는 권한을 사용자에게 부여해야 합니다.

일반적으로 필요한 권한을 확보했으면 다음과 같이 진행됩니다. 사용자는 스택 세트를 생성할 때 사용자 지정 관리 역할을 지정해야 합니다. 사용자는 CloudFormation에 역할을 전달할 수 있는 권한을 가지고 있어야 합니다. 뿐만 아니라 사용자 지정 관리 역할은 스택 세트에 지정된 대상 계정과 신뢰 관계를 맺고 있어야 합니다. CloudFormation은 스택 세트를 생성하고 사용자 지정 관리 역할을 여기에 연결합니다. 스택 세트를 업데이트할 때 사용자는 사용자 지정 관리 역할을 명시적으로 지정해야 합니다. 이전에 이 스택 세트에 사용된 것과 동일한 사용자 지정 관리 역할인 경우에도 마찬가지입니다. CloudFormation은 위의 요구 사항에 따라 해당 역할을 사용하여 스택을 업데이트합니다.

Administrator account
예 권한 정책 예

각 스택 세트에 대해 대상 계정 실행 역할을 수임할 수 있는 권한을 가진 사용자 지정 관리 역할을 생성합니다.

대상 계정 실행 역할 이름은 모든 대상 계정에서 동일해야 합니다. 역할 이름이 AWSCloudFormationStackSetExecutionRole인 경우 StackSets는 스택 세트를 생성할 때 이 역할을 자동으로 사용합니다. 사용자 지정 역할 이름을 지정하는 경우 사용자는 스택 세트를 생성할 때 실행 역할 이름을 제공해야 합니다.

사용자 지정 이름과 다음 권한 정책을 가진 IAM 서비스 역할을 생성합니다. 아래 예제에서 custom_execution_role은 대상 계정의 실행 역할을 의미합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target_account_id:role/custom_execution_role" ], "Effect": "Allow" } ] }

단일 문에서 여러 계정을 지정하려면 다음과 같이 쉼표로 구분합니다.

"Resource": [ "arn:aws:iam::target_account_id_1:role/custom_execution_role", "arn:aws:iam::target_account_id_2:role/custom_execution_role" ]

계정 ID 대신 와일드카드(*)를 사용하여 모든 대상 계정을 지정할 수 있습니다.

"Resource": [ "arn:aws:iam::*:role/custom_execution_role" ]
예 신뢰 정책 예제 1

역할을 수임할 수 있는 IAM 보안 주체를 정의하려면 서비스 역할에 대한 신뢰 정책을 제공해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
예 신뢰 정책 예제 2

기본적으로 비활성화되어 있는 리전에 상주하는 대상 계정에 스택 인스턴스를 배포하려면 해당 리전의 리전 서비스 보안 주체도 포함해야 합니다. 기본적으로 비활성화된 각 리전에는 자체 리전 서비스 보안 주체가 있습니다.

다음 신뢰 정책 예제는 기본적으로 비활성화되어 있는 리전인 아시아 태평양(홍콩) 리전(ap-east-1)의 관리자 역할을 사용할 수 있는 권한을 서비스에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "cloudformation.amazonaws.com", "cloudformation.ap-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

자세한 내용은 기본적으로 비활성화된 리전과 관련된 스택 세트 작업 수행 단원을 참조하십시오. 리전 코드 목록은 AWS 일반 참조 안내서의 리전 엔드포인트를 참조하세요.

예 역할 전달 정책 예제

사용자가 스택 세트 작업을 수행할 때 사용자 지정 관리 역할 전달을 허용하는 IAM 사용자에 대한 IAM 권한 정책도 필요합니다. 자세한 내용은 사용자에게 AWS 서비스 역할을 전달할 수 있는 권한 부여를 참조하세요.

아래 예제에서 customized_admin_role은 사용자가 전달해야 하는 관리 역할을 의미합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/customized_admin_role" } ] }
Target accounts

각 대상 계정에서 서비스 역할을 생성합니다. 이 서비스 역할은 이 계정에서 사용하고 싶은 사용자 지정 관리자 역할과 신뢰 관계를 맺고 있습니다.

대상 계정 역할에는 CloudFormation 템플릿에서 지정된 작업을 수행할 수 있는 권한이 필요합니다. 예를 들어, 템플릿이 S3 버킷을 생성할 경우 S3에서 새 객체를 생성할 수 있는 권한이 필요합니다. 대상 계정에는 항상 스택의 생성, 업데이트, 삭제, 설명을 비롯한 전체 CloudFormation 권한이 필요합니다.

대상 계정 역할 이름은 모든 대상 계정에서 동일해야 합니다. 역할 이름이 AWSCloudFormationStackSetExecutionRole인 경우 StackSets는 스택 세트를 생성할 때 이 역할을 자동으로 사용합니다. 사용자 지정 역할 이름을 지정하는 경우 사용자는 스택 세트를 생성할 때 실행 역할 이름을 제공해야 합니다.

예 권한 정책 예

다음 예는 스택 세트가 작동하기 위한 최소 권한이 포함된 정책 설명을 보여줍니다. 대상 계정에서 CloudFormation 이외의 서비스에서 리소스를 사용하는 스택을 생성하려면 권한 정책에 해당 서비스 작업 및 리소스를 추가해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
예 신뢰 정책 예제

신뢰 관계를 정의하기 위해서는 역할을 생성할 때 다음과 같은 신뢰 정책을 제공해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }

사용자가 특정 스택 세트에 포함시킬 수 있는 리소스 제어

사용자 지정 실행 역할을 사용하여 사용자 및 그룹이 스택 세트에 어떤 스택 리소스를 포함시킬 수 있는지 제어합니다. 예를 들어 생성한 스택 세트에 Amazon S3 관련 리소스만을 포함시킬 수 있도록 그룹을 설정하면서 다른 팀에서는 DynamoDB 리소스만을 포함시키고자 할 수 있습니다. 이렇게 하려면 각 그룹에 대한 사용자 지정 관리 역할과 각 리소스 세트에 대한 사용자 지정 실행 역할 간의 신뢰 관계를 생성합니다. 사용자 지정 실행 역할은 스택 세트에 어떤 스택 리소스를 포함시킬 수 있는지를 정의합니다. 사용자 지정 관리 역할은 관리자 계정 내에 상주하고, 사용자 지정 실행 역할은 정의된 리소스를 사용하여 스택 세트를 생성하고자 하는 각 대상 계정 내에 상주합니다. 그런 다음 스택 세트 작업을 수행할 때 사용자 지정 관리 역할을 사용하도록 특정 사용자 및 그룹을 활성화합니다.

예를 들어 관리자 계정 내에 사용자 지정 관리 역할 A, B, C를 생성할 수 있습니다. 역할 A를 사용할 수 있는 권한을 보유한 사용자 및 그룹은 사용자 지정 실행 역할 X에 나열된 스택 리소스를 포함하는 스택 세트를 생성할 수 있지만 여기에 역할 Y나 Z에 나열된 스택 리소스 또는 모든 실행 역할에 포함되지 않은 리소스를 포함할 수는 없습니다.

사용자 지정 관리 역할과 대상 계정 내 사용자 지정 실행 역할 간의 신뢰 관계를 설정합니다. 이제 사용자는 스택 세트를 생성할 때 해당 역할을 전달합니다.

스택 세트를 업데이트할 때 사용자는 사용자 지정 관리 역할을 명시적으로 지정해야 합니다. 이전에 이 스택 세트에 사용된 것과 동일한 사용자 지정 관리 역할인 경우에도 마찬가지입니다. CloudFormation은 사용자에게 해당 스택 세트에 대한 작업을 수행할 수 있는 권한이 있는 한 지정된 사용자 지정 관리 역할을 사용하여 업데이트를 수행합니다.

마찬가지로 사용자는 사용자 지정 실행 역할 또한 지정할 수 있습니다. 사용자 지정 실행 역할을 지정하는 경우 CloudFormation은 위의 요구 사항에 따라 해당 역할을 사용하여 스택을 업데이트합니다. 사용자가 사용자 지정 실행 역할을 지정하지 않은 경우 CloudFormation은 이전에 스택 세트에 연결된 사용자 지정 실행 역할을 사용하여 업데이트를 수행합니다(단, 사용자가 스택 세트에서 작업을 수행할 수 있는 권한을 가지고 있는 경우).

Administrator account

특정 대상 계정의 스택 세트 작업을 수행할 수 있는 사용자 제어에서 자세히 설명하는 것과 같이 관리자 계정에 사용자 지정 관리 역할을 생성합니다. 사용자 지정 관리 역할과 사용하고자 하는 사용자 지정 실행 역할 간의 신뢰 관계를 포함합니다.

예 권한 정책 예

다음 예제는 사용자 지정 실행 역할은 물론 대상 계정에 대해 정의된 AWSCloudFormationStackSetExecutionRole 모두에 대한 권한 정책입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487980684000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole", "arn:aws:iam::*:role/custom_execution_role" ] } ] }
Target accounts

스택 세트를 생성하고자 하는 대상 계정에서 사용자 및 그룹에서 스택 세트에 포함시킬 수 있는 서비스 및 리소스에 대한 권한을 부여하는 사용자 지정 실행 역할을 생성합니다.

예 권한 정책 예

다음 예제는 Amazon DynamoDB 테이블 생성 권한이 포함된 스택 세트에 대한 최소 권한을 제공합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamoDb:createTable" ], "Resource": "*" } ] }
예 신뢰 정책 예제

신뢰 관계를 정의하기 위해서는 역할을 생성할 때 다음과 같은 신뢰 정책을 제공해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }

특정 스택 세트 작업에 대한 권한 설정

추가로 사용자 및 그룹에서 특정 스택 세트 작업을 수행할 수 있는 권한을 설정할 수 있습니다(예: 스택 세트 또는 스택 인스턴스 생성, 업데이트 또는 삭제). 자세한 내용은 IAM 사용 설명서의 CloudFormation에 대한 작업, 리소스 및 조건 키를 참조하세요.

혼란스러운 대리자 문제를 완화하기 위해 전역 키 설정

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. AWS에서는 교차 서비스 가장으로 인해 혼동된 대리자 문제가 발생할 수 있습니다. 교차 서비스 가장은 한 서비스(직접적으로 호출하는 서비스)가 다른 서비스(직접적으로 호출되는 서비스)를 직접적으로 호출할 때 발생할 수 있습니다. 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 보안 주체를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

AWS CloudFormation StackSets가 다른 서비스를 제공하는 리소스에 대한 권한을 제한하려면 리소스 정책에서 aws:SourceArnaws:SourceAccount 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 두 글로벌 조건 컨텍스트 키를 모두 사용하는 경우 aws:SourceAccount값과 aws:SourceArn값의 계정은 동일한 정책 문에서 사용할 경우 동일한 계정 ID를 사용해야 합니다.

혼동된 대리인 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 aws:SourceArn 글로벌 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모를 경우 또는 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드(*)를 포함한 aws:SourceArn 전역 조건 컨텍스트 키를 사용합니다. 예를 들면 arn:aws:cloudformation::123456789012:*입니다. 가능하면 더 구체적인 aws:SourceArn을 사용합니다. 올바른 ARN 또는 ARN 패턴을 결정할 수 없는 경우에만 aws:SourceAccount를 사용합니다.

StackSets가 administrator(관리자) 계정에서 Administration(관리) 역할을 맡으면 StackSets는 administrator(관리자) 계정 ID와 StackSets Amazon 리소스 이름(ARN)을 채웁니다. 따라서 혼란스러운 대리자 문제를 방지하기 위해 신뢰 관계에서 전역 키 aws:SourceAccountaws:SourceArn에 대한 조건을 정의할 수 있습니다. 다음 예제에서는 StackSets에서 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.

Administrator account
aws:SourceAccountaws:SourceArn에 대한 전역 키

StackSets를 사용할 때 AWSCloudFormationStackSetAdministrationRole 신뢰 정책에 전역 키 aws:SourceAccountaws:SourceArn을 정의하여 혼동된 대리자 문제를 방지합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:stackset/*" } } } ] }
예 StackSets ARN

더 세밀하게 제어할 수 있도록 연결된 StackSets ARN을 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": [ "arn:aws:cloudformation:STACKSETS-REGION:111122223333:stackset/STACK-SET-ID-1", "arn:aws:cloudformation:STACKSETS-REGION:111122223333:stackset/STACK-SET-ID-2", ] } } } ] }