방법 2: IAM을 사용하여 Automation을 위한 역할 구성 - AWS Systems Manager

방법 2: IAM을 사용하여 Automation을 위한 역할 구성

AWS Systems Manager의 기능인 Automation용 서비스 역할을 생성해야 하는 경우 다음 태스크를 완료합니다. Automation을 위해 서비스 역할이 필요한 상황에 대한 자세한 내용은 Automation 설정 섹션을 참조하세요.

작업 1: Automation을 위한 서비스 역할 생성

다음 절차를 사용하여 Systems Manager Automation에 대한 서비스 역할 또는 수임 역할을 생성합니다.

참고

AWS-CreateManagedLinuxInstance 실행서와 같은 실행서에서도 이 역할을 사용할 수도 있습니다. 실행서에서 이 역할 또는 AWS Identity and Access Management(IAM) 역할의 Amazon 리소스 이름(ARN)을 사용하면 Automation을 통해 환경에서 새 인스턴스 시작 및 사용자 대신 작업 수행과 같은 작업을 수행할 수 있습니다.

IAM 역할을 생성하고 Automation에서 이를 수임하도록 허용하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 유형의 엔터티 선택(Select type of trusted entity) 아래에서 AWS 서비스를 선택합니다.

  4. 사용 사례 선택 섹션에서 Systems Manager를 선택한 후 다음: 권한을 선택합니다.

  5. Attach permissions policy(권한 정책 연결) 페이지에서 AmazonSSMAutomationRole 정책을 검색하여 선택한 후 다음: 검토를 선택합니다.

  6. 검토 페이지에서 역할 이름 상자에 이름을 입력한 후 설명을 입력합니다.

  7. 역할 생성(Create role)을 선택합니다. 그러면 역할 페이지로 돌아갑니다.

  8. 역할 페이지에서 방금 만든 역할을 선택하여 요약 페이지를 엽니다. 역할 이름역할 ARN을 메모합니다. 다음 절차에서 IAM 계정에 iam:PassRole 정책을 연결할 때 역할 ARN을 지정합니다. 실행서에서 역할 이름과 ARN을 지정할 수도 있습니다.

참고

AmazonSSMAutomationRole 정책은 계정 내 AWS Lambda 함수의 하위 집합에 Automation 역할 권한을 할당합니다. 이 함수는 "Automation"으로 시작합니다. Lambda 함수와 함께 Automation을 사용할 예정인 경우 Lambda ARN에서 다음 형식을 사용해야 합니다.

"arn:aws:lambda:*:*:function:Automation*"

ARN이 이 형식을 사용하지 않는 기존 Lambda 함수가 있는 경우 AWSLambdaRole 정책과 같은 추가 Lambda 정책도 자동화 역할에 연결해야 합니다. 추가 정책 또는 역할은 AWS 계정 내에서 Lambda 함수에 대한 보다 폭넓은 액세스를 제공해야 합니다.

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

Automation이 리소스에 다른 서비스를 제공하는 권한을 제한하려면 리소스 정책에서 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 만약 aws:SourceArn 값에 Amazon S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우 권한을 제한하려면 두 전역 조건 컨텍스트 키를 모두 사용해야 합니다. 두 전역 조건 컨텍스트 키와 계정을 포함한 aws:SourceArn 값을 모두 사용하는 경우, aws:SourceAccount 값 및 aws:SourceArn 값의 계정은 동일한 정책 명령문에서 사용할 경우 반드시 동일한 계정 ID를 사용해야 합니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 aws:SourceArn를 사용하십시오. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 aws:SourceAccount을 사용하세요. aws:SourceArn의 값은 자동화 실행을 위한 ARN이어야 합니다. 리소스의 전체 ARN을 모를 경우 또는 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드(*)를 포함한 aws:SourceArn 글로벌 조건 컨텍스트 키를 사용합니다. 예를 들면 arn:aws:ssm:*:123456789012:automation-execution/*입니다.

다음 예는 자동화시 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:automation-execution/*" } } } ] }
역할의 신뢰 정책 수정
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. 계정의 역할 목록에서 Automation 서비스 역할의 이름을 선택합니다.

  4. 신뢰 관계 탭을 선택한 후 신뢰 관계 편집을 선택합니다.

  5. 혼동된 대리자 문제를 방지하기 위해 Automation에 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하여 신뢰 정책을 편집합니다.

  6. 신뢰 정책 업데이트(Update Trust Policy)를 선택하여 변경 사항을 저장합니다.

(선택 사항) 다른 AWS 서비스를 간접적으로 호출할 Automation 인라인 정책과 고객 관리형 정책 추가

IAM 서비스 역할을 사용하여 다른 AWS 서비스을(를) 호출하는 자동화를 실행하는 경우 해당 서비스 역할이 다른 서비스를 호출할 권한이 있도록 구성되어야 합니다. 이 요구 사항은 AWS-ConfigureS3BucketLogging, AWS-CreateDynamoDBBackup, AWS-RestartEC2Instance 실행서 등의 모든 AWS Automation 실행서(AWS-* 실행서)에 적용됩니다. 또한 다른 서비스를 호출하는 작업을 사용하여 다른 AWS 서비스을(를) 호출하는 사용자 정의 실행서를 생성하는 경우에도 이 요구 사항이 항상 적용됩니다. 예를 들어 aws:executeAwsApi, aws:CreateStack 또는 aws:copyImage를 사용하는 경우 이러한 서비스를 호출할 수 있는 권한을 포함하여 서비스 역할을 구성해야 합니다. 역할에 IAM 인라인 정책과 고객 관리형 정책을 추가하여 다른 AWS 서비스에 대한 권한을 부여할 수 있습니다.

서비스 역할의 인라인 정책을 포함하려면(IAM 콘솔)
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. 목록에서 편집할 역할의 이름을 선택합니다.

  4. 권한 탭을 선택합니다.

  5. 권한 추가 드롭다운에서 정책 연결 또는 인라인 정책 생성을 선택합니다.

  6. 정책 연결을 선택하는 경우 추가할 정책 옆의 확인란을 선택하고 권한 추가를 선택합니다.

  7. 인라인 정책 생성을 선택하는 경우 JSON 탭을 선택합니다.

  8. 호출하려는 AWS 서비스‬의 JSON 정책 문서를 입력합니다. 다음은 2개의 예제 JSON Policy 문서입니다.

    Amazon S3 PutObject 및 GetObject 예

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

    Amazon EC2 CreateSnapshot 및 DescribeSnapShots 예

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:DescribeSnapshots", "Resource":"*" } ] }

    IAM 정책 언어에 대한 자세한 내용은 IAM User GuideIAM JSON Policy Reference를 참조하세요.

  9. 작업이 완료되면 정책 검토(Review policy)를 선택합니다. 정책 검사기가 모든 구문 오류를 보고합니다.

  10. 정책 검토(Review policy) 페이지에서 생성 중인 정책의 이름(Name)을 입력합니다. 정책 요약을 검토하여 정책이 부여한 권한을 확인합니다. 그런 다음 정책 생성을 선택하여 작업을 저장합니다.

  11. 인라인 정책을 생성하면 이 정책이 역할에 자동으로 포함됩니다.

작업 2: Automation 역할에 iam:PassRole 정책 연결하기

다음 절차에 따라 자동화 서비스 역할에 iam:PassRole 정책을 연결합니다. 이렇게 하면 Automation 서비스가 자동화를 실행할 때 이 역할을 다른 서비스 또는 Systems Manager 기능에 전달할 수 있습니다.

iam:PassRole 정책을 자동화 역할에 연결하려면,
  1. 방금 만든 역할에 대한 요약 페이지에서 권한 탭을 선택합니다.

  2. 인라인 정책 추가(Add inline policy)를 선택합니다.

  3. 정책 생성(Create policy) 페이지에서 시각적 편집기(Visual editor) 탭을 선택합니다.

  4. 서비스(Service)IAM을 차례대로 선택합니다.

  5. 작업 선택을 선택합니다.

  6. 작업 필터링 텍스트 상자에 PassRole을 입력하고 PassRole 옵션을 선택합니다.

  7. 리소스를 선택합니다. Specific(특정)이 선택되었는지 확인한 다음, ARN 추가(Add ARN)를 선택합니다.

  8. Specify ARN for role(역할 ARN 지정) 필드에 작업 1의 마지막에 복사한 자동화 역할 ARN을 붙여 넣습니다. 계정(Account)역할 이름 및 경로(Role name with path) 필드에 값이 채워집니다.

    참고

    Automation 서비스 역할에서 EC2 인스턴스에 IAM 인스턴스 프로파일 역할을 연결하려면 IAM 인스턴스 프로파일 역할의 ARN을 추가해야 합니다. 이렇게 하면 Automation 서비스 역할이 IAM 인스턴스 프로파일 역할을 대상 EC2 인스턴스로 전달할 수 있습니다.

  9. 추가(Add)를 선택합니다.

  10. 정책 검토(Review policy)를 선택합니다.

  11. 정책 검토(Review Policy) 페이지에 이름을 입력한 다음 정책 생성(Create Policy)을 선택합니다.