Amazon EC2의 IAM 역할 - Amazon Elastic Compute Cloud

Amazon EC2의 IAM 역할

애플리케이션은 AWS 자격 증명으로 API 요청에 서명해야 합니다. 따라서 애플리케이션 개발자는 EC2 인스턴스에서 실행되는 인스턴스의 자격 증명을 관리할 전략을 수립해야 합니다. 예를 들어 AWS 자격 증명을 인스턴스에 안전하게 배포하여 다른 사용자로부터 보호하는 한편 해당 인스턴스의 애플리케이션이 자격 증명을 사용하여 요청에 서명하도록 할 수 있습니다. 그러나 각 인스턴스에 자격 증명을 안전하게 배포하기란 쉽지 않으며, 스팟 인스턴스와 같이 AWS에서 자동으로 생성하는 인스턴스 또는 Auto Scaling 그룹의 인스턴스에 대해서는 특히 어렵습니다. 또한 AWS 자격 증명을 교체할 때 각 인스턴스의 자격 증명을 업데이트할 수 있어야 합니다.

애플리케이션이 사용하는 보안 자격 증명을 직접 관리할 필요 없이 인스턴스의 애플리케이션에서 안전하게 API 요청을 전송할 수 있도록 IAM 역할을 설계했습니다. AWS 자격 증명을 생성하고 배포하는 대신 다음과 같이 IAM 역할을 사용하여 API 요청 전송 권한을 위임할 수 있습니다.

  1. IAM 역할 생성.

  2. 역할을 수행할 수 있는 계정 또는 AWS 서비스를 정의합니다.

  3. 역할을 수행하면서 애플리케이션이 사용할 수 있는 API 작업 및 리소스를 정의합니다.

  4. 인스턴스를 시작할 때 역할을 지정하거나, 기존 인스턴스에 역할을 연결합니다.

  5. 애플리케이션에서 임시 자격 증명 세트를 검색하여 사용하도록 합니다.

예를 들어 IAM 역할을 사용하여 인스턴스에서 실행되며 Amazon S3의 버킷을 사용해야 하는 애플리케이션에 해당 권한을 부여할 수 있습니다. JSON 형식으로 정책을 생성하여 IAM 역할에 권한을 지정할 수 있습니다. 이 방법은 사용자를 대상으로 정책을 생성할 때와 비슷합니다. 역할을 변경하면 모든 인스턴스에 변경 내용이 전파됩니다.

참고

Amazon EC2 IAM 역할 보안 인증에는 역할에 구성된 최대 세션 기간이 적용되지 않습니다. 자세한 내용을 알아보려면 IAM 사용 설명서IAM 역할 사용을 참조하세요.

IAM 역할을 생성할 때, 애플리케이션에 필요한 특정 API 호출에 대한 액세스를 제한하는 최소 권한 IAM 정책을 연결합니다. Windows 간 통신의 경우 잘 정의되고 잘 문서화된 Windows 그룹 및 역할을 사용하여 Windows 인스턴스 간에 애플리케이션 수준의 액세스 권한을 부여합니다. 고객은 그룹 및 역할을 통해 최소 권한 애플리케이션 및 NTFS 폴더 수준 권한을 정의하여 애플리케이션별 요구 사항에 맞게 액세스를 제한할 수 있습니다.

인스턴스에 하나의 IAM 역할만 연결할 수 있지만, 여러 인스턴스에 동일한 역할을 연결할 수는 있습니다. IAM 역할 생성 및 사용에 대한 자세한 내용은 IAM 사용 설명서에서 역할을 참조하십시오.

IAM 정책에 리소스 수준 권한을 적용하여 사용자가 인스턴스에 IAM 역할을 연결, 교체 또는 분리할 수 있는 권한을 제어할 수 있습니다. 자세한 내용은 Amazon EC2 API 작업에 지원되는 리소스 수준 권한 및 다음 예제: 예: IAM 역할 작업 섹션을 참조하세요.

인스턴스 프로파일

Amazon EC2에서는 인스턴스 프로파일을 IAM 역할의 컨테이너로 사용합니다. IAM 콘솔을 사용하여 IAM 역할을 생성하면 인스턴스 프로파일이 자동으로 생성되고 해당 역할과 동일한 이름이 지정됩니다. Amazon EC2 콘솔을 사용하여 IAM 역할로 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결하는 경우 인스턴스 프로파일 이름 목록을 기반으로 역할을 선택합니다.

AWS CLI, API 또는 AWS SDK를 사용하여 역할을 생성하면 역할과 인스턴스 프로파일이 별개의 작업으로 생성되며 이름은 각각 다를 수 있습니다. AWS CLI, API 또는 AWS SDK를 사용하여 IAM 역할로 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결하는 경우 인스턴스 프로파일 이름을 지정합니다.

인스턴스 프로파일은 하나의 IAM 역할만 포함할 수 있습니다. 이 한도는 늘릴 수 없습니다.

자세한 내용은 IAM 사용 설명서에서 인스턴스 프로파일을 참조하십시오.

사용 사례에 대한 권한

애플리케이션에 대한 IAM 역할을 처음 생성하는 경우 간혹 필요 이상의 권한을 부여하게 될 수 있습니다. 프로덕션 환경에서 애플리케이션을 시작하기 전에 IAM 역할에 대한 액세스 활동을 기반으로 IAM 정책을 생성할 수 있습니다. IAM Access Analyzer는 사용자의 AWS CloudTrail 로그를 검토하고 지정된 날짜 범위에 역할에 의해 사용된 권한이 포함된 정책 템플릿을 생성합니다. 템플릿을 사용하여 세분화된 권한을 가진 관리형 정책을 생성한 다음 IAM 역할에 연결할 수 있습니다. 이렇게 하면 특정 사용 사례에 따라 역할이 AWS 리소스와 상호 작용하는 데 필요한 권한만 부여할 수 있습니다. 이는 최소 권한 부여 모범 사례를 준수하는 데 도움이 됩니다. 자세한 내용은 IAM 사용 설명서의 IAM Access Analyzer 정책 생성을 참조하세요.

Amazon EC2 인스턴스의 인스턴스 자격 증명 역할

실행된 각 Amazon EC2 인스턴스에는 ID를 나타내는 인스턴스 ID 역할이 있습니다. 인스턴스 ID 역할은 일종의 IAM 역할입니다. 인스턴스 ID 역할을 사용하도록 통합된 AWS 서비스 및 기능은 이를 사용하여 서비스에서 인스턴스를 식별할 수 있습니다.

인스턴스 ID 역할 보안 인증 정보는 /identity-credentials/ec2/security-credentials/ec2-instance의 인스턴스 메타데이터 서비스(IMDS)에서 액세스할 수 있습니다. 보안 인증 정보는 AWS 임시 액세스 키 쌍과 세션 토큰으로 구성됩니다. 인스턴스 ID 역할을 사용하는 AWS 서비스에 대한 AWS Sigv4 요청에 서명하는 데 사용됩니다. 보안 인증 정보는 인스턴스 ID 역할을 사용하는 서비스 또는 기능이 인스턴스에서 활성화되었는지 여부에 관계없이 인스턴스 메타데이터에 표시됩니다.

인스턴스 ID 역할은 인스턴스가 시작될 때 자동으로 생성되며, 역할 신뢰 정책 문서가 없으며, ID 또는 리소스 정책의 적용을 받지 않습니다.

지원되는 서비스

다음 AWS 서비스는 인스턴스 ID 역할을 사용합니다.

  • Amazon EC2EC2 Instance Connect는 인스턴스 ID 역할을 사용하여 Linux 인스턴스의 호스트 키를 업데이트합니다.

  • Amazon GuardDuty - Runtime Monitoring은 인스턴스 ID 역할을 사용하여 런타임 에이전트가 GuardDuty VPC 엔드포인트로 보안 원격 측정을 전송할 수 있도록 합니다.

  • AWS Security Token Service(AWS STS) – 인스턴스 ID 역할 보안 인증 정보를 AWS STS GetCallerIdentity 작업과 함께 사용할 수 있습니다.

  • AWS Systems Manager기본 호스트 관리 구성을 사용하는 경우 AWS Systems Manager는 인스턴스 ID 역할에서 제공하는 ID를 사용하여 EC2 인스턴스를 등록합니다. 인스턴스를 식별한 후 Systems Manager는 사용자의 AWSSystemsManagerDefaultEC2InstanceManagementRole IAM 역할을 인스턴스에 전달할 수 있습니다.

인스턴스 ID 역할은 인스턴스 ID 역할과 통합되지 않으므로 다른 AWS 서비스 또는 기능과 함께 사용할 수 없습니다.

인스턴스 ID 역할 ARN

인스턴스 ID 역할 ARN은 다음과 같은 형식을 사용합니다.

arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id

예:

arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-0123456789example

ARN에 대한 자세한 내용은 IAM 사용 설명서Amazon 리소스 이름(ARN)을 참조하세요.