◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
AWS Organizations
AWS Organizations는 여러 AWS 계정을 중앙에서 관리하기 위한 서비스이다.
AWS Organizations를 사용하면 여러 AWS 계정에 대한 권한 설정 및 각 계정의 청구 정보를 통합한 일괄 청구를 이용할 수 있다.
Organizations 특징
- 1개의 관리용 계정(Management Account)과 여러 개의 멤버 계정(Member Account)으로 구성된다.
- 멤버 계정을 그룹화하여 각각의 그룹마다 Policy를 설정 가능하다
- 여기서의 멤버 계정의 그룹은 OU(Organizational Unit)이라고 한다.
- 예를 들어, 보안&로그에 관한 Policy를 작성하여 계정 전체에 적용하거나 OU마다 다르게 설정할 수도 있다.
- 일관 청구: 모든 계정에서의 AWS 비용을 관리 계정에서 일관해서 청구 관리 가능.
OU ≈ 그룹
💵 AWS 계정들 일관 청구 관리
Organizations에서 관리하는 여러 AWS 계정의 청구/비용 정보를 하나로 통합하여 중앙에서 관리할 수 있다.
이를 통해, AWS 계정마다 개별적으로 비용을 지불하는 것보다 전체 비용을 합산함으로써 볼륨 디스카운트를 받을 수 있다. 게다가 멤버 계정이 구매한 할인된 서비스를 다른 멤버들과 공유하여 다른 멤버들도 할인 혜택을 받을 수 있다.
FYI)
할인된 서비스에는 Reserve Instance와 Compute Savings Plans가 있다.
관리 계정(Management Account)에서 Reserve Instance와 Savings Plans의 할인 공유를 활성화함으로써 Organizations 내의 모든 계정의 사용량에 적용하여 효과적으로 활용할 수 있다.
Compute Savings Plans ... 1년 또는 3년 기간 동안 일정 서비스 사용량(시간당 요금)을 계약함으로써 일반 요금보다 저렴하게 이용할 수 있는 구매 옵션
📜 SCP (Service Control Policy: 서비스 제어 정책)
SCP은 OU(Organizational Unit) 또는 특정 계정에 대해 AWS 서비스에 대한 접근 권한 및 사용 가능한 리소스를 제한할 수 있는 기능이다.
예를 들어, SCP를 사용하면 OU에 속한 테스트용 계정(그룹)은 특정 서비스에만 접근하도록 제한하거나, 모든 계정에 대해 MFA를 강제하도록 설정할 수 있다.
또한, SCP를 적용하는 조건(Condition)을 설정하여 특정 IAM User 또는 IAM Role에 대해서만 제한을 적용하는 등의 제어도 가능하다.
조건 키 (condition keys)
조건 키는 특정 조건에 따라 접근 제어를 수행하기 위해 Policy의 Condition 요소 내에서 사용된다.
조건 키를 사용하면 Policy의 허가나 거부를 구체적인 조건으로 세밀하게 제어하여 접근 권한을 상세히 관리할 수 있다.
조건 키 중에서 글로벌 조건 키는 "aws:"로 시작하며, 모든 AWS 서비스에 대해 공통적으로 사용할 수 있다.
반면, 서비스 고유의 조건 키는 서비스 고유의 이름(예: "s3:")으로 시작합니다.
글로벌 조건 키 예시
- aws:PrincipalOrgID: Organization 전체
- AWS Organizations에 속한 전체 계정의 접근을 제어하는 데 사용됩니다.
- 예시) 특정 조직(Organizations) ID를 가진 계정만 특정 리소스에 접근할 수 있도록 설정
- aws:PrincipalOrgPaths: Organization의 특정 OU
- 조직 유닛(OU)의 계층을 지정하여 특정 부서나 그룹에 대한 세밀한 접근을 제어
- 예시) 특정 OU에 속한 계정들만 특정 리소스에 접근할 수 있도록 설정
- aws:PrincipalTag:
- Tag에 기반하여 접근을 제어한다.
- 예시) 특정 태그가 적용된 사용자나 역할만 리소스에 접근할 수 있도록 설정
Organizations 전체가 대상이라면 aws:PrincipalOrgID를 적용해야한다.
특정 OU가 대상이라면 aws:PrincipalOrgPaths를 적용해야한다.
예시) 조건 키 적용
아래의 Policy는 o-1234567890 조직 ID를 가진 계정만 your-bucket-name S3 버킷에 대한 s3:GetObject 및 s3:ListBucket 작업을 허가합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-1234567890"
}
}
}
]
}
🤔 SAA 예시 문제 1)
어느 기업이 AWS Organizations를 사용하여 여러 AWS 계정을 중앙에서 관리하고 있습니다. 이 기업은 Amazon EC2 인스턴스에 대한 작업을 AWS Organizations 내의 조직 구성원에게만 제한하고자 합니다. 운영 부담을 최소화하면서 이를 실현하기 위한 가장 적절한 방법은 무엇입니까?
- IAM Role의 액세스 정책에 OU(Organizational Unit) 경로를 지정한 aws:PrincipalOrgPaths글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
- IAM Role의 액세스 정책에 특정 태그를 지정한 aws:PrincipalTag글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
- IAM Role의 액세스 정책에 조직 ID를 지정한 aws:PrincipalOrgID글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
- AWS Config를 사용하여 조직 내 모든 Amazon EC2 인스턴스의 구성 변경을 모니터링하고, 구성 규칙을 평가합니다.
정답
정답. 3번
IAM Role의 액세스 정책에 조직 ID를 지정한 aws:PrincipalOrgID 글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
위의 문제에서, 글로벌 조건 키 aws:PrincipalOrgID(조직 ID)를 지정함으로써, 특정 조직 ID를 가진 프린시펄(IAM 사용자, 그룹, 역할, 또는 AWS 서비스)만 리소스에 액세스할 수 있도록 허용할 수 있다.
OU(Organizational Unit)이나 태그(Tag)를 사용한 세부적인 제어와 비교하여, Policy 관리가 간단하며, 대규모 조직에서의 운영 부담을 줄일 수 있다.
조직 전체를 대상으로 한 일괄적인 액세스 제한을 시행하므로, 개별 계정이나 사용자에 대한 별도의 액세스 설정을 할 필요가 없어 관리가 용이해진다.
오답
1번. IAM Role의 액세스 정책에 OU(Organizational Unit) 경로를 지정한 aws:PrincipalOrgPaths 글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
aws:PrincipalOrgPaths(조직 경로)를 조건 키로 지정함으로써, Organizations의 특정 계층에 대해서만 액세스를 허용할 수 있다.
특정 OU에 한정하여 액세스 제어를 설정하는 경우에 적합하지만, 이 기업이 요구하는 것은 조직 전체에 대한 액세스 제어이므로 최적의 선택이 아니다.
2번. IAM 역할의 액세스 정책에 특정 태그를 지정한 aws:PrincipalTag 글로벌 조건 키를 추가합니다. 이를 EC2 인스턴스에 연결합니다.
aws:PrincipalTag(프린시펄 태그)를 조건 키로 지정함으로써, 설정된 태그를 기반으로 액세스 제어를 할 수 있다. 태그 기반의 액세스 제어는 매우 유연하고 강력하지만, 태그의 관리와 유지에는 운영의 부담이 따른다.
특히 대규모 조직에서는 태그의 일관성을 유지하는 것이 어려울 수 있으므로, 운영의 간소화를 중시할 경우에는 최적이 아니다.
4번. AWS Config를 사용하여 조직 내 모든 Amazon EC2 인스턴스의 구성 변경을 모니터링하고, 구성 규칙을 평가합니다.
AWS Config는 AWS 리소스의 설정을 관리하고 기록 및 평가하는 서비스이다.
🤔 SAA 예시 문제 2)
A company uses AWS Organizations to manage multiple AWS accounts for different departments. The management account has an Amazon S3 bucket that contains project reports. The company wants to limit access to this S3 bucket to only users of accounts within the organization in AWS Organizations.
Which solution meets these requirements with the LEAST amount of operational overhead?
- Add the aws PrincipalOrgID global condition key with a reference to the organization ID to the S3 bucket policy.
- Create an organizational unit (OU) for each department. Add the aws:PrincipalOrgPaths global condition key to the S3 bucket policy.
- Use AWS CloudTrail to monitor the CreateAccount, InviteAccountToOrganization, LeaveOrganization, and RemoveAccountFromOrganization events. Update the S3 bucket policy accordingly.
- Tag each user that needs access to the S3 bucket. Add the aws:PrincipalTag global condition key to the S3 bucket policy.
정답
답. 1
aws:PrincipalOrgID Validates if the principal accessing the resource belongs to an account in your organization.
https://aws.amazon.com/blogs/security/control-access-to-aws-resources-by-using-the-aws-organization-of-iam-principals/