EC2 인스턴스에서 실행되는 앱에 대한 권한 지정 - AWS OpsWorks

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

EC2 인스턴스에서 실행되는 앱에 대한 권한 지정

스택의 Amazon EC2 인스턴스에서 실행되는 애플리케이션이 Amazon S3 버킷 같은 다른 AWS 리소스에 액세스해야 하는 경우, 해당 애플리케이션에 적절한 권한이 있어야 합니다. 이러한 권한을 부여하려면 인스턴스 프로파일을 사용합니다. AWS OpsWorks Stacks 스택을 생성할 때 각 인스턴스에 대해 인스턴스 프로파일을 지정할 수 있습니다.


            스택 추가 페이지의 고급 옵션.

계층 구성을 편집하여 계층의 인스턴스에 대한 프로파일을 지정할 수도 있습니다.

인스턴스 프로파일은 IAM 역할을 지정합니다. 인스턴스에서 실행되는 애플리케이션은 해당 역할을 수행하여 역할의 정책이 부여하는 권한에 따라 AWS 리소스에 액세스할 수 있습니다. 애플리케이션이 역할을 수행하는 방식에 대한 자세한 내용은 API 호출을 사용하여 역할 수행을 참조하십시오.

다음 방법 중 하나를 사용하여 인스턴스 프로파일을 생성할 수 있습니다.

  • 스택을 생성할 때 AWS OpsWorks Stacks가 새 프로파일을 생성하도록 합니다.

    프로파일은 aws-opsworks-ec2-role와 비슷한 이름을 가지며, 신뢰 관계는 있지만 정책은 없습니다.

  • IAM 콘솔 또는 API를 사용하여 프로파일을 생성합니다.

    자세한 내용은 역할(위임 및 연동)을 참조하십시오.

  • AWS CloudFormation 템플릿을 사용하여 프로파일을 생성합니다.

    템플릿에 IAM 리소스를 포함시키는 방법의 몇 가지 예제는 Identity and Access Management(IAM) 템플릿 조각을 참조하십시오.

인스턴스 프로파일에는 신뢰 관계와 AWS 리소스에 액세스할 수 있는 권한을 부여하는 연결된 정책이 있어야 합니다. AWS OpsWorks Stacks에 의해 생성되는 인스턴스 프로파일에는 다음의 신뢰 관계가 있습니다.

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

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

  • IAM 콘솔에서 Create Role(역할 생성) 마법사를 사용하는 경우, 마법사 두 번째 페이지의 AWS Service Roles(AWS Service 역할) 아래에서 Amazon EC2 역할 유형을 지정합니다.

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

    "Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } } }

자체 인스턴스 프로파일을 생성하는 경우, 그 시점에 프로파일의 역할에 적절한 정책을 연결할 수 있습니다. 스택 생성 시 AWS OpsWorks Stacks가 사용자 대신 인스턴스 프로파일을 생성하도록 하는 경우, 이 프로파일은 연결된 정책이 없고 권한도 부여하지 않습니다. 스택을 생성한 후 IAM 콘솔 또는 API를 사용하여 프로파일의 역할에 적절한 정책을 연결해야 합니다. 예를 들어 다음 정책은 Amazon S3 버킷에 대한 모든 액세스 권한을 부여합니다.

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

인스턴스 프로파일을 생성하고 사용하는 방법의 예제는 Amazon S3 버킷 사용을 참조하십시오.

애플리케이션이 인스턴스 프로파일을 사용하여 EC2 인스턴스에서 AWS OpsWorks Stacks API를 호출하는 경우, 정책이 AWS OpsWorks Stacks 및 기타 AWS 서비스에 적절한 작업 외에 iam:PassRole 작업을 허용해야 합니다. iam:PassRole 권한은 AWS OpsWorks Stacks가 사용자를 대신하여 서비스 역할을 수행하도록 허용합니다. AWS OpsWorks Stacks API에 대한 자세한 내용은 AWS OpsWorks API 참조를 참조하십시오.

다음은 Amazon EC2 또는 Amazon S3 작업뿐 아니라 EC2 인스턴스에서 AWS OpsWorks Stacks 작업을 호출하도록 허용하는 IAM 정책 예제입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole"], "Resource": "*" } ] }
참고

iam:PassRole을 허용하지 않으면 AWS OpsWorks Stacks 작업 호출 시도는 다음과 같은 오류와 함께 실패합니다.

User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole

EC2 인스턴스에서 권한을 위한 역할 사용에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서Amazon EC2 인스턴스에서 실행되는 애플리케이션에게 AWS 리소스에 액세스할 수 있는 권한 부여를 참조하십시오.