Amazon EC2용 IAM 역할
Amazon EC2용 IAM 역할
애플리케이션은 AWS 자격 증명으로 API 요청에 서명해야 해요. 이 절에서 EC2 인스턴스에서 실행되는 애플리케이션의 자격 증명을 관리하는 전략인 IAM 역할에 대해 살펴볼게요.
출처: 문서
본문
애플리케이션은 AWS 자격 증명으로 API 요청에 서명해야 해요. 따라서 애플리케이션 개발자라면 EC2 인스턴스에서 실행되는 애플리케이션의 자격 증명을 관리하는 전략이 필요해요. 예를 들어 AWS 자격 증명을 인스턴스에 안전하게 배포해 그 인스턴스의 애플리케이션이 자격 증명으로 요청에 서명하게 하면서, 다른 사용자로부터 자격 증명을 보호할 수 있어요. 하지만 특히 Spot Instances나 Auto Scaling 그룹의 인스턴스처럼 AWS가 대신 만들어주는 인스턴스에 자격 증명을 안전하게 배포하는 것은 어려워요. 또한 AWS 자격 증명을 순환(rotate)할 때 각 인스턴스의 자격 증명을 업데이트할 수 있어야 해요.
IAM 역할은 애플리케이션이 사용하는 보안 자격 증명을 관리할 필요 없이, 인스턴스에서 애플리케이션이 안전하게 API 요청을 할 수 있도록 설계됐어요. AWS 자격 증명을 만들고 배포하는 대신, IAM 역할로 API 요청 권한을 위임할 수 있어요.
- IAM 역할을 만듭니다.
- 어떤 계정 또는 AWS 서비스가 역할을 수임할 수 있는지 정의합니다.
- 역할을 수임한 후 애플리케이션이 사용할 수 있는 API 작업과 리소스를 정의합니다.
- 인스턴스를 시작할 때 역할을 지정하거나, 기존 인스턴스에 역할을 연결합니다.
- 애플리케이션이 임시 자격 증명 집합을 검색해 사용하게 합니다.
예를 들어 IAM 역할로 Amazon S3의 버킷을 사용해야 하는 인스턴스에서 실행되는 애플리케이션에 권한을 부여할 수 있어요. JSON 형식의 정책을 만들어 IAM 역할에 대한 권한을 지정할 수 있어요. 이는 사용자에 대해 만드는 정책과 비슷해요. 역할을 변경하면 변경 사항이 모든 인스턴스에 전파돼요.
참고
Amazon EC2 IAM 역할 자격 증명은 역할에 구성된 최대 세션 기간(maximum session duration)의 적용을 받지 않아요. 자세한 내용은 IAM User Guide의 Methods to assume a role을 참고하세요.
IAM 역할을 만들 때는 애플리케이션이 필요로 하는 특정 API 호출에 대한 접근을 제한하는 최소 권한(least privilege) IAM 정책을 연결하세요. Windows-간 통신에는 잘 정의되고 잘 문서화된 Windows 그룹과 역할을 사용해 Windows 인스턴스 간에 애플리케이션 수준 접근을 부여하세요. 그룹과 역할을 사용하면 고객이 최소 권한 애플리케이션·NTFS 폴더 수준 권한을 정의해 애플리케이션별 요구 사항에 대한 접근을 제한할 수 있어요.
인스턴스에는 IAM 역할 하나만 연결할 수 있지만, 같은 역할을 여러 인스턴스에 연결할 수 있어요. IAM 역할 생성·사용에 대한 자세한 내용은 IAM User Guide의 Roles를 참고하세요.
IAM 정책에 리소스 수준 권한을 적용해 사용자가 인스턴스의 IAM 역할을 연결, 교체, 분리하는 기능을 제어할 수 있어요. 자세한 내용은 Supported resource-level permissions for Amazon EC2 API actions와 다음 예시 Example: Work with IAM roles를 참고하세요.
인스턴스 프로필
Amazon EC2는 instance profile을 IAM 역할의 컨테이너로 사용해요. IAM 콘솔에서 IAM 역할을 만들면 콘솔이 인스턴스 프로필을 자동으로 만들고 대응하는 역할과 같은 이름을 부여해요. Amazon EC2 콘솔로 IAM 역할과 함께 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결한다면 인스턴스 프로필 이름 목록에서 역할을 선택해요.
AWS CLI, API, AWS SDK로 역할을 만들면 역할과 인스턴스 프로필을 별도의 작업으로, 잠재적으로 다른 이름으로 만듭니다. 그런 다음 AWS CLI, API, AWS SDK로 IAM 역할과 함께 인스턴스를 시작하거나 인스턴스에 IAM 역할을 연결한다면 인스턴스 프로필 이름을 지정합니다.
인스턴스 프로필에는 IAM 역할 하나만 포함될 수 있어요. IAM 역할 하나를 여러 인스턴스 프로필에 포함할 수 있어요.
인스턴스의 권한을 업데이트하려면 인스턴스 프로필을 교체하세요. 역할을 인스턴스 프로필에서 제거하는 것은 이 변경이 적용되기까지 최대 1시간의 지연이 있으므로 권장하지 않아요.
자세한 내용은 IAM User Guide의 Use instance profiles를 참고하세요.
사용 사례에 대한 권한
애플리케이션용 IAM 역할을 처음 만들 때는 필요한 것보다 더 많은 권한을 부여할 때가 있어요. 애플리케이션을 프로덕션 환경에 시작하기 전에 IAM 역할의 접근 활동을 기반으로 IAM 정책을 생성할 수 있어요. IAM Access Analyzer가 AWS CloudTrail 로그를 검토하고, 지정한 날짜 범위에서 역할이 사용한 권한이 포함된 정책 템플릿을 생성해요. 이 템플릿을 사용해 세밀한 권한이 있는 관리형 정책을 만들고 IAM 역할에 연결할 수 있어요. 이렇게 하면 특정 사용 사례에 대해 AWS 리소스와 상호작용할 때 역할이 필요한 권한만 부여하게 돼요. 이는 최소 권한 부여 모범 사례를 지키는 데 도움이 돼요. 자세한 내용은 IAM User Guide의 IAM Access Analyzer policy generation을 참고하세요.
Amazon EC2 인스턴스용 인스턴스 ID 역할(Instance identity roles)
시작하는 각 Amazon EC2 인스턴스에는 그 ID를 나타내는 instance identity role이 있어요. 인스턴스 ID 역할은 IAM 역할의 한 유형이에요. 인스턴스 ID 역할을 사용하도록 통합된 AWS 서비스와 기능은 이를 사용해 인스턴스를 서비스에 식별할 수 있어요.
인스턴스 ID 역할 자격 증명은 IMDS(Instance Metadata Service)의 /identity-credentials/ec2/security-credentials/ec2-instance에서 접근할 수 있어요. 자격 증명은 AWS 임시 접근 키 쌍과 세션 토큰으로 구성돼요. 이는 인스턴스 ID 역할을 사용하는 AWS 서비스에 대한 AWS Sigv4 요청에 서명하는 데 사용돼요. 이 자격 증명은 인스턴스에서 인스턴스 ID 역할을 사용하는 서비스나 기능이 활성화되어 있는지 여부와 관계없이 인스턴스 메타데이터에 존재해요.
인스턴스 ID 역할은 인스턴스가 시작될 때 자동으로 생성되며, 역할 신뢰 정책 문서가 없고 어떤 ID 또는 리소스 정책의 적용도 받지 않아요.
지원되는 서비스
다음 AWS 서비스가 인스턴스 ID 역할을 사용해요.
- Amazon Bedrock AgentCore – AgentCore Runtime Instances가 시작 중 인스턴스를 설정할 때 인스턴스 ID 역할을 사용해요.
- Amazon EC2 – EC2 Instance Connect가 인스턴스 ID 역할을 사용해 Linux 인스턴스의 호스트 키를 업데이트해요.
- Amazon GuardDuty – GuardDuty Runtime Monitoring이 인스턴스 ID 역할을 사용해 런타임 에이전트가 보안 텔레메트리를 GuardDuty VPC 엔드포인트로 보내도록 허용해요.
- AWS Lambda – Lambda Managed Instances가 수명 주기 후크, 텔레메트리, 아티팩트 배포에 인스턴스 ID 역할을 사용해요.
- AWS STS(Security Token Service) – 인스턴스 ID 역할 자격 증명을 AWS STS GetCallerIdentity 작업과 함께 사용할 수 있어요.
- AWS Systems Manager – Default Host Management Configuration을 사용할 때 AWS Systems Manager가 인스턴스 ID 역할이 제공하는 ID로 EC2 인스턴스를 등록해요. 인스턴스를 식별한 후 Systems Manager가
AWSSystemsManagerDefaultEC2InstanceManagementRoleIAM 역할을 인스턴스에 전달할 수 있어요.
인스턴스 ID 역할은 다른 AWS 서비스나 기능과는 사용할 수 없어요. 인스턴스 ID 역할과 통합되지 않기 때문이에요.
인스턴스 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-1234567890abcdef0
ARN에 대한 자세한 내용은 IAM User Guide의 Amazon Resource Names (ARNs)를 참고하세요.