조직 전체에 AWS Config Conformance Pack 적용하기

JIPA
12 min readOct 26, 2020

--

AWS 에서는 AWS 클라우드 상에서 사용되는 다양한 구성요소에 대한 설정과 변경 이력을 관리해주는 AWS Config 라는 서비스를 제공하고 있습니다. AWS Config 는 기본적으로 Config 를 지원하는 다양한 AWS 서비스의 설정 및 변경 이력을 관리하고 직관적인 사용자 인터페이스를 제공함으로써 주요 AWS 자산의 변경 이력이 발생하였을 경우 해당 자산과 관련한 다양한 정보를 손쉽게 확인하고 조치할 수 있는 기능을 제공하고 있습니다.

AWS Config 는 이러한 변경이력관리와 더불어 Config Rule 이라는 기능을 통해 관리자가 지정한 AWS 서비스 혹은 3rd Party 솔루션의 상태에 대한 설정 환경을 지정할 수 있고 Rule 내에 정의된 설정 환경을 위반하는 경우 사용자에게 경보를 발생하거나 자동 문제 해결을 할 수 있는 기능을 제공하고 있습니다.

여러분들은 이런 Config Rule 을 통하여 조직내에서 필요한 다양한 보안 요건이나 규정 준수 요건들을 규칙화하여 빠르게 생성되고 변화하는 AWS 클라우드 자산들을 효율적으로 관리할 수 있습니다. 이러한 Config Rule 과 관련한 기능 중 멀티 계정 환경에서 각 계정이 조직이 정의한 규칙들을 잘 준수하고 있는지를 확인하는데 사용할 수 있는 기능 중 하나가 바로 Conformance Pack ( 호환성 Pack )인데요.

Conformance Pack 은 Config Rule 을 사용한다는 점에서 일반 Config Rule 과 비슷하지만 멀티 계정 환경에서 Conformance Pack 을 생성한 계정이( 예를 들면, 보안 계정) 멤버 계정에게 Conformance Pack 을 적용한 경우 멤버 계정에서는 할당받은 Conformance Pack 내의 규칙을 수정하거나 삭제할 수 없다는 점에서 일반 Config Rule 과는 다른 특징을 갖습니다.

즉, 다수의 계정 환경에서 보안팀과 같은 규정 준수 요건을 수립하고 각 조직내 AWS 계정이 수립된 규정 준수 요건을 준수하는지 등을 확인할 필요가 있다면 개별 계정내에서 권한을 가진 사용자가 규칙을 수정할 수 있는 일반적인 Config Rule 보다는 개별 계정 내에서는 누구도 수정 및 삭제 권한을 가질 수 없는 규칙들로 구성된 Conformance Pack 을 구성하는 것이 조금 더 효율적이라고 볼 수 있을 것 같습니다.

이러한 Conformace Pack 은 Conformance Pack 을 소유한 계정에서 자체적으로 Conformace Pack 을 사용하려고 하는 경우라면 AWS Management Console 을 통해 사용할 수 있지만 위에 언급한 것처럼 멀티 계정 환경에서 Conformace Pack 소유 계정(예를 들면, 보안 계정)에서 타 계정에게 적용하고자 하는 경우에는 AWS CLI 나 API 등을 통해 사용할 수 있습니다. 이 포스팅에서는 AWS CLI 를 이용해서 Conformance Pack 을 사용하는 방법에 대해 살펴보려고 합니다.

참고. 이 포스팅은 아래의 AWS 공식 블로그를 참고하여 작성하였습니다.

사전 준비

  1. AWS Organizations 의 Master 계정에 접속할 수 있어야 합니다.
  2. Master 계정을 포함해서 Conformance Pack 을 적용하고자 하는 모든 멤버 계정에 AWS Config 가 활성화되어 있어야 합니다.
  3. Master 계정 혹은 멤버 계정에 Conformance Pack Template 공유를 위한 S3 Bucket 이 생성되어 있어야 합니다.

설정 1. S3 Bucket 생성
멀티 계정 환경에서 Conformance Pack 을 사용하기 위해서는 템플릿 관리를 위한 S3 Bucket 이 필요하며 이 Bucket 은 반드시 “awsconfigconforms” 로 시작하는 이름을 가져야 합니다. 또한, 이 Bucket 은 Conformance Pack 의 적용을 받는 모든 멤버 계정에서 접속하여야 하므로 각 멤버 계정에 대한 접근을 허용하는 Bucket Policy 가 적용되어 있어야 합니다.

아래와 같은 Bucket Policy 를 사용하시면 됩니다.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGetPutObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::awsconfigconforms<suffix in bucket name>/*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "customer_org_id"
},
"ArnLike": {
"aws:PrincipalArn": "arn:aws:iam::*:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms"
}
}
},
{
"Sid": "AllowGetBucketAcl",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::awsconfigconforms<suffix in bucket name>",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "customer_org_id"
},
"ArnLike": {
"aws:PrincipalArn": "arn:aws:iam::*:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms"
}
}
}
]
}
Bucket Policy 화면

Organizations 에 Conformance Pack 적용하기

S3 Bucket 이 정상적으로 생성되었다면 이번에는 Conformance Pack 을 적용해보도록 하겠습니다. 이 포스팅에서는 최근에 한국 사용자들을 위해 추가된 K-ISMS 관련 Conformance Pack Template 을 아래의 링크에서 다운로드 후 사용하도록 하겠습니다.

아래 Github 링크에서 제공하는 K-ISMS Conformance Pack Template 을 제 랩탑에 저장한 후 AWS CLI 를 이용하여 “OrgKISMSConformancePack” 이라는 이름으로 Conformance Pack 을 Organization 레벨로 적용해 보았습니다.

Organization Level 로 Conformace Pack 적용을 위해 사용된 AWS CLI 명령어 구조입니다.

aws configservice put-organization-conformance-pack --organization-conformance-pack-name="OrgS3ConformancePack" --template-body="file://<PATH TO YOUR TEMPLATE>/<TEMPLATE FILENAME>" --delivery-s3-bucket=<YOUR BUCKET>

아래 화면은 명령어 실행 후 AWS CLI Output 입니다.

{
"OrganizationConformancePackArn": "arn:aws:config:ap-northeast-2:123456789012:organization-conformance-pack/OrgKISMSConformancePack-mlajgraq"
}

아래는 Conformance Pack 설치 명령이 CLI 를 통해 정상적으로 실행된 후 Management Console 에 접속하여 Master 계정에서의 Conformance Pack 화면입니다.

Management Console 에서의 진행 상황

Conformance Pack 설치가 완료된 후 Master 가 아닌 Organizations 의 멤버 계정에 접속해보면 아래와 같이 Master 에서 정의한 Conformance Pack 이 정상적으로 적용되어 있는 것을 확인할 수 있습니다.

멤버 — 개발자 계정
멤버 — 공유 계정

Conformance Pack 의 장점은 한번 설치된 Conformance Pack 은 각 멤버 계정에서는 누구도 적용된 Conformance Pack 을 수정하거나 삭제할 수 없다는 점입니다. 즉, Conformance Pack 관리 계정에서 조직의 각종 규정을 규칙화한 후 Conformance Pack 으로 정리하여 각 멤버 계정에 적용하게 되면 멤버 계정에서의 삭제 및 수정 권한이 없으므로 보다 안전하고 정확한 각 계정내의 규정 준수 여부를 확인할 수 있습니다.

Organizations 내 AWS Config 관리 권한을 위임하기

위 과정에서는 Organizations 의 Master 계정을 통해 Conformance Pack 을 조직내에 적용하였지만 Master 계정이 아닌 별도의 보안 계정을 이용하여 Conformance Pack 을 관리하고 싶은 경우라면 Master 계정에서 해당 계정으로 AWS Config Rule관리 권한을 위임해주어야 합니다.

아래의 순서에 따라 Master 계정에서의 AWS Config Rule 관리 권한이 위임 가능하며 당연히 Master 계정에서 설정작업이 진행되어야 합니다.

  1. AWS Config Rule 서비스에 대한 접근 활성화
aws organizations enable-aws-service-access --service-principal=config-multiaccountsetup.amazonaws.com

2. AWS Config Rule 관리권한 위임 상태 확인
: 이전에 권한을 위임한 적이 없다면 아무런 계정정보가 출력되지 않아야 합니다.

aws organizations list-delegated-administrators --service-principal=config-multiaccountsetup.amazonaws.com

3. 특정 계정에 AWS Config Rule 관리 권한 위임

aws organizations register-delegated-administrator --service-principal=config-multiaccountsetup.amazonaws.com --account-id="계정ID"

AWS Config Rule 이 특정 계정에 정상적으로 위임되었다면 아래와 같이 위임된 계정 정보를 확인할 수 있습니다.

여기까지 진행이 된 상태라면 여기서부터 Conformance Pack 적용을 위한 작업을 등록된 보안 계정에서 수행하면 됩니다.

4. 특정 계정에서 AWS Config 관리 권한 제거

aws organizations deregister-delegated-administrator --service-principal=config-multiaccountsetup.amazonaws.com --account-id="계정 ID"

현재 AWS 에서는 상당히 많은 수의 Conformance Pack 을 업데이트하고 있습니다. 따라서, AWS 서비스를 사용하시는 조직이라면 업데이트되는 다양한 Conformance Pack 을 확인 후 조직에 맞는 Pack 을 사용하거나 Template 을 사용하여 적절한 Customized Conformance Pack 을 생성하여 적용하여도 좋을 것 같습니다.

감사합니다.

--

--

JIPA
JIPA

Written by JIPA

Always Day 1. Security is job zero.

No responses yet