1. AWS Arn, Iam, Policy, Role 이란? 개념정리
1.1. ARN (Amazon Resource Name)
- 정의: ARN은 AWS 리소스를 고유하게 식별하는 Amazon 리소스 식별자입니다. 각 리소스에 대해 고유한 ARN이 있으며, 이를 통해 해당 리소스에 대한 권한을 부여하거나 정책을 적용할 수 있습니다.
- 예시
- Amazon S3 버킷의 ARN은
arn:aws:s3:::bucket-name
과 같이 표현될 수 있습니다. - 특정 IAM 사용자의 Arn은
arn:aws:iam::account-id:user/user-name
같이 표현될 수 있습니다.- IAM 사용자 예시 _ arn:aws:iam::123456789012:user/johndoe
- SNS Topic 예시 _ arn:aws:sns:us-east-1:123456789012:example-sns-topic-name
- VPC 예시 _ arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE
- Amazon S3 버킷의 ARN은
- ARN 은 아래와 같은 내용으로 구성되어 있습니다.
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id
- partition
- 리소스가 있는 파티션입니다. 파티션은 AWS 리전의 그룹입니다. 각 AWS 계정은 하나의 파티션으로 범위가 지정됩니다. 지원되는 파티션은 다음과 같습니다.
- aws - AWS 리전
- aws-cn - 중국 리전
- aws-us-gov - AWS GovCloud (US) 리전
- 리소스가 있는 파티션입니다. 파티션은 AWS 리전의 그룹입니다. 각 AWS 계정은 하나의 파티션으로 범위가 지정됩니다. 지원되는 파티션은 다음과 같습니다.
- service
- AWS 제품을 식별하는 서비스 네임스페이스입니다.
- region
- 리전 코드. 예를 들어 미국 동부(오하이오)의 경우 us-east-2입니다. 리전 코드 목록은 AWS 일반 참조의 리전 엔드포인트를 참조하세요.
- account-id
- 리소스를 소유한 AWS 계정의 ID(하이픈 없음)입니다. 예: 123456789012.
- resource-type
- 리소스 유형입니다. Virtual Private Cloud(VPC)의 vpc를 예로 들 수 있습니다.
- resource-id
- 리소스 식별자입니다. 리소스의 이름, 리소스의 ID 또는 리소스 경로입니다. 일부 리소스 식별자에는 상위 리소스(sub-resource-type/parent-resource/sub-resource) 또는 버전과 같은 식별자(resource-type:resource-name:qualifier)를 포함할 수 있습니다.
1.2. IAM (Identity and Access Management)
- 정의
- IAM은 AWS에서 제공하는 서비스로, AWS 리소스에 대한 액세스를 관리하는 데 사용됩니다. 사용자, 그룹 및 역할을 생성하고 이들에 대한 권한을 제어할 수 있습니다.
- IAM을 통해 개별 사용자에게 특정 리소스에 대한 액세스 권한을 부여하거나, 사용자 그룹을 생성하여 권한을 일괄적으로 관리할 수 있습니다.
- 예시
- IAM을 사용하여 사용자에게 특정 S3 버킷의 읽기 및 쓰기 권한을 부여할 수 있습니다.
- 계정의 IAM 사용자 _ arn:aws:iam::123456789012:user/JohnDoe
- IAM 사용자 그룹 _ arn:aws:iam::123456789012:group/Developers
- IAM 역할 _ arn:aws:iam::123456789012:role/S3Access
- 관리형 정책 _ arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
1.3. Policy
- 정의
- 정책(Policy)은 AWS 리소스에 대한 액세스를 정의하는 문서입니다.
- 정책(Policy)는 권한과 같다고 볼 수 있습니다.
- IAM에서 사용하며 JSON 형식으로 작성됩니다.
- 특정 작업이나 리소스에 대한 권한을 지정합니다.
- 정책(Policy)은 특정 권한 및 규칙을 정의하는 문서이며, 사용자, 그룹, 또는 역할에 연결됩니다.
- 예시: S3 버킷에 대한 읽기 권한을 부여하는 정책은 다음과 같을 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
1.4. Role
- 정의
- 역할(Role)은 AWS 리소스에 안전하게 액세스하기 위해 다른 AWS 계정, 서비스 또는 사용자에게 부여되는 권한입니다.
- 역할(Role)은 일시적으로 사용되며, 필요할 때만 권한을 부여하고 사용자나 서비스가 필요하지 않을 때는 폐기될 수 있습니다.
- Role은 Policy와 연결되어 동작하며, 특정 역할(Role)을 부여받은 사용자나 서비스는 그 역할에 연결된 Policy 만큼의 액세스를 가질 수 있습니다.
- 역할(Role) 안에 여러 Policy 를 가질 수 있습니다.
- 역할(Role)은 특정 상황 또는 시점에 어떠한 권한을 수행하는 것입니다.
- 예시: Lambda 함수가 S3 버킷의 객체를 읽어오기 위한 역할을 생성하고 그 역할에 정책(Policy)을 부여할 수 있습니다.
reference
- https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference-arns.html
- https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_identifiers.html