AWS OpsWorks Stacks가 사용자 대신 작업하도록 허용 - AWS OpsWorks

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

AWS OpsWorks Stacks가 사용자 대신 작업하도록 허용

AWS OpsWorks Stacks는 사용자 대신 다양한 AWS 서비스와 상호 작용해야 합니다. 예를 들어 AWS OpsWorks Stacks는 Amazon EC2와 상호 작용하여 인스턴스를 생성하고 Amazon CloudWatch와 상호 작용하여 모니터링 통계를 가져옵니다. 스택을 생성할 때 AWS OpsWorks Stacks에게 적절한 권한을 부여하는, 일반적으로 서비스 역할이라고 하는 IAM 역할을 지정합니다.


            스택 추가 페이지의 IAM 역할 목록.

새 스택의 서비스 역할을 지정할 때 다음 중 하나를 수행할 수 있습니다.

  • AWS OpsWorks Stacks가 표준 권한 세트를 보유한 새 서비스 역할을 생성하도록 합니다.

    역할에는 aws-opsworks-service-role 또는 비슷한 이름이 지정됩니다.

  • 앞서 생성한 표준 서비스 역할을 지정합니다.

    첫 번째 스택을 만들 때 표준 서비스 역할을 생성한 후 이후 모든 스택에 대해 해당 역할을 사용하는 것이 일반적입니다.

  • IAM 콘솔 또는 API를 사용하여 생성한 사용자 지정 서비스 역할을 지정합니다.

    AWS OpsWorks Stacks에 표준 서비스 역할보다 제한적인 권한을 부여하려는 경우 이 방법이 유용합니다.

참고

첫 번째 스택을 생성하려면 IAM AdministratorAccess 정책 템플릿에서 정의된 권한이 있어야 합니다. 이러한 권한은 앞서 설명한 대로 AWS OpsWorks Stacks가 새 IAM 서비스 역할을 생성하도록 허용하고 관리 사용자가 사용자를 가져올 수 있도록 허용합니다. 이후 모든 스택에 대해 사용자가 첫 번째 스택에 대해 생성된 서비스 역할을 선택할 수 있습니다. 스택을 생성하는 데 전체 관리 권한이 필요한 것은 아닙니다.

표준 서비스 역할이 부여하는 권한은 다음과 같습니다.

  • 모든 Amazon EC2 작업을 수행합니다(ec2:*).

  • CloudWatch 통계를 가져옵니다(cloudwatch:GetMetricStatistics).

  • Elastic Load Balancing를 사용하여 트래픽을 서버 간에 분산합니다(elasticloadbalancing:*).

  • Amazon RDS 인스턴스를 데이터베이스 서버로 사용합니다(rds:*).

  • IAM 역할(iam:PassRole)을 사용하여 AWS OpsWorks Stacks와 Amazon EC2 인스턴스 간 보안 통신을 제공합니다.

사용자 지정 서비스 역할을 생성한 경우 서비스 역할이 AWS OpsWorks Stacks가 스택을 관리하는 데 필요한 모든 권한을 부여하는지 확인해야 합니다. 다음 JSON 샘플은 표준 서비스 역할에 대한 정책 문입니다. 사용자 지정 서비스 역할은 최소한 다음 권한을 정책 문에 포함해야 합니다.

{ "Statement": [ { "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "ecs:*", "elasticloadbalancing:*", "rds:*" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

서비스 역할에는 신뢰 관계도 있습니다. AWS OpsWorks Stacks에 의해 생성되는 서비스 역할에는 다음의 신뢰 관계가 있습니다.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS OpsWorks Stacks가 사용자를 대신하여 작업하려면 서비스 역할에 이 신뢰 관계가 있어야 합니다. 기본 서비스 역할을 사용하는 경우, 신뢰 관계를 수정하지 마십시오. 사용자 지정 서비스 역할을 생성하는 경우, 다음과 같이 신뢰 관계를 지정합니다.

  • IAM 콘솔에서 Create Role(역할 생성) 마법사를 사용하는 경우, 마법사 두 번째 페이지의 AWS Service Roles(AWS Service 역할) 아래에서 AWS Opsworks 역할 유형을 지정합니다. 마법사에서 기본적으로 추가하라는 메시지가 나타나는 AWSOpsWorksRole 정책은 적절한 신뢰 관계를 가지고 있으며 AWS OpsWorks가 사용자를 대신하여 몇 가지 작업을 수행하도록 허용하지만, 사용자가 인스턴스, Elastic Load Balancing 로드 밸런서 또는 Amazon ECS 클러스터와 같은 새로운 리소스를 생성하도록 허용하지 않습니다. 사용자를 대신하여 해당 리소스를 생성할 수 있는 AWS OpsWorks 권한을 부여하려면 AWSOpsWorksRole 정책에서 사용 가능한 작업에 다음과 같은 허용된 작업을 추가하는 사용자 지정 정책을 역할에 연결합니다.

    "ec2:*", "ecs:*", "elasticloadbalancing:*", "rds:*"
  • AWS CloudFormation 템플릿을 사용하는 경우, 다음을 리소스 섹션에 추가할 수 있습니다.

    "Resources": { "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "opsworks.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { ... } ] } }, } }