자습서: 조직 생성 및 구성
이 자습서에서는 AWS 멤버 계정 2개로 조직을 생성하고 구성합니다. 조직 내 멤버 계정 하나를 만들고, 다른 계정을 조직에 초대합니다. 그런 다음에는 허용 목록 기법을 사용하여 명시적으로 나열된 서비스와 작업만 계정 관리자가 위임할 수 있도록 지정합니다. 이를 통해 관리자는 AWS가 도입한 새로운 서비스를 승인한 후 회사 관계자가 사용하도록 허가할 수 있습니다. 따라서 AWS에서 새로운 서비스가 도입되는 경우 관리자가 적절한 정책의 허용 목록에 서비스를 추가할 때까지 해당 서비스는 금지된 상태로 유지됩니다. 또한 이 자습서는 거부 목록을 사용하여 멤버 계정에 있는 모든 사용자가 AWS CloudTrail이 생성하는 감사 로그에 대한 구성을 변경할 수 없도록 하는 방법도 보여줍니다.
다음 그림은 자습서의 기본 단계를 보여줍니다.
- 1단계: 조직 만들기
-
이 단계에서는 현재 AWS 계정을 관리 계정으로 사용하는 조직을 생성합니다. 또한 한 AWS 계정을 조직에 초대하고, 두 번째 계정을 멤버 계정으로 생성합니다.
- 2단계: 조직 단위 만들기
-
그런 다음에는 새로운 조직 내에 조직 단위(OU) 2개를 만들고 OU에 멤버 계정을 배치합니다.
- 3단계: 서비스 제어 정책 생성
-
서비스 제어 정책(SCP)을 사용하여 멤버 계정 사용자와 역할에 위임할 수 있는 작업을 제한할 수도 있습니다. 이 단계에서는 SCP 2개를 생성하고 조직의 OU에 연결해봅니다.
- 4단계: 조직 정책 테스트
-
각 테스트 계정에서 사용자로 로그인해 SCP가 해당 계정에 어떤 효과를 주는지 살펴보세요.
이 자습서에 있는 단계를 실행해도 AWS 청구서에 비용이 발생하지 않습니다. AWS Organizations는 무료 서비스입니다.
사전 조건
이 자습서는 여러분이 기존 AWS 계정 2개에 액세스할 수 있으며(3번째 계정은 자습서를 진행하면서 만들게 됩니다), 각 계정에 관리자로 로그인할 수 있다고 가정합니다.
이 자습서에서 계정은 다음과 같은 의미가 있습니다.
-
111111111111
- 조직을 만들 때 사용하는 계정입니다. 이 계정은 관리 계정이 됩니다. 이 계정의 소유자는 OrgAccount111@example.com
이라는 이메일 주소를 가집니다.
-
222222222222
- 멤버 계정으로 조직에 초대한 계정입니다. 이 계정의 소유자는 member222@example.com
이라는 이메일 주소를 가집니다.
-
333333333333
- 조직의 멤버로 생성한 계정입니다. 이 계정의 소유자는 member333@example.com
이라는 이메일 주소를 가집니다.
위의 값을 테스트 계정과 관련된 값으로 대체하세요. 이 자습서에서는 되도록 프로덕션 계정은 사용하지 마세요.
1단계: 조직 만들기
이번 단계에서는 111111111111 계정에 관리자로 로그인해 해당 계정을 관리 계정으로 이용해 조직을 생성하고, 기존 계정 222222222222를 멤버 계정으로 조직에 초대합니다.
- AWS Management Console
-
-
111111111111 계정의 관리자로 AWS에 로그인한 후 AWS Organizations 콘솔을 엽니다.
-
소개 페이지에서 조직 생성(Create organization)을 선택합니다.
-
확인 대화 상자에서 조직 생성Create organization)을 선택합니다.
기본적으로 조직은 모든 기능이 활성화된 상태로 생성됩니다. 통합 결제 기능만 활성화하여 조직을 생성할 수도 있습니다.
AWS가 조직을 생성하고 AWS 계정 페이지를 표시합니다. 다른 페이지에 있는 경우 왼쪽의 탐색 창에서 AWS 계정을 선택합니다.
AWS에서 이메일 주소를 확인한 적이 없는 계정을 사용하는 경우 확인 이메일이 관리 계정과 연결된 주소로 자동 전송됩니다. 확인 이메일을 받기까지 어느 정도 시간이 걸릴 수 있습니다.
-
24시간 내에 이메일 주소를 확인하세요. 자세한 정보는 AWS Organizations를 사용하여 이메일 주소 확인 섹션을 참조하세요.
이제 여러분의 계정이 유일한 멤버 계정인 조직을 만들었습니다. 이것은 조직의 관리 계정입니다.
기존 계정을 조직에 가입하도록 초대
이제 조직을 확보했으니, 조직 내 계정 만들기를 시작할 수 있습니다. 이번 섹션의 단계에서는 기존 계정을 초대해 조직의 멤버가 되게 합니다.
- AWS Management Console
-
기존 계정을 가입 초대하려면
-
AWS 계정 페이지로 이동하고 AWS 계정 추가(Add an AWS 계정)를 선택합니다.
-
AWS 계정 추가 페이지에서 기존 AWS 계정 초대를 선택합니다.
-
초대할 AWS 계정 의 이메일 주소 또는 계정 ID(Email address or account ID of an AWS 계정 to invite) 상자에서, 초대할 계정 소유자의 이메일 주소(예: member222@example.com
)를 입력합니다. 또는 AWS 계정 ID 번호를 알고 있다면 해당 번호를 대신 입력합니다.
-
초대 이메일 메시지에 포함할 메시지(Message to include in the invitation email message) 상자에서, 원하는 텍스트를 입력합니다. 이 텍스트는 이메일에 포함되어 계정 소유자에게 전송됩니다.
-
초대 보내기(Send invitation)를 선택합니다. AWS Organizations가 계정 소유자에게 초대를 전송합니다.
메시지가 길 경우 오류 메시지를 펼칩니다. 조직에 대한 계정 한도를 초과했거나 조직이 아직 초기화되고 있기 때문에 계정을 추가할 수 없음을 나타내는 오류인 경우 조직을 생성한 후 한 시간 동안 기다렸다가 다시 시도합니다. 오류가 지속될 경우 AWS 지원에 문의하세요.
-
자습서 목적 상 지금은 여러분 자신이 보낸 초대를 수락해야 합니다. 다음 중 하나를 수행하여 콘솔의 [Invitations] 페이지로 이동합니다.
-
AWS 계정 페이지에서 수락(Accept)과 확인(Confirm)을 차례로 선택합니다.
초대 메시지의 수신이 지연될 수 있으며, 이 경우 초대를 수락하려면 기다려야 할 수 있습니다.
-
멤버 계정에서 로그아웃한 다음 관리 계정 관리자로 다시 로그인합니다.
멤버 계정 생성
이번 단원의 단계에서는 자동으로 조직의 멤버가 되는 AWS 계정을 생성합니다. 자습서에서 이 계정을 333333333333이라고 하겠습니다.
- AWS Management Console
-
멤버 계정을 만들려면
-
AWS Organizations 콘솔의 AWS 계정 페이지에서 AWS 계정 추가(Add AWS 계정)를 선택합니다.
-
AWS 계정 추가(Add an AWS 계정) 페이지에서 AWS 계정 생성(Create an AWS 계정)을 선택합니다.
-
AWS 계정 이름에 계정 이름을 입력합니다(예: MainApp
Account
).
-
계정 루트 사용자의 이메일 주소(Email address of the account’s root user)에서, 계정을 대표하여 소식을 받을 사람의 이메일 주소를 입력합니다. 이 값은 하나만 존재해야 합니다. 두 계정이 같은 이메일 주소를 가지면 안 됩니다. 예를 들면 mainapp@example.com
등을 사용할 수 있습니다.
-
[IAM role name]을 공란으로 두어 기존 역할 이름인 OrganizationAccountAccessRole
을 자동으로 사용하게 하거나, 이름을 직접 입력합니다. 이 역할은 사용자가 관리 계정의 IAM 사용자로 로그인하면 새로운 멤버 계정에 액세스할 수 있게 합니다. 본 자습서에서는 이 역할 이름을 공란으로 두어 AWS Organizations가 기본 이름으로 역할을 생성하도록 할 것입니다.
-
생성AWS 계정을 선택합니다. AWS 계정 페이지에 새 계정이 표시되려면 페이지를 새로 고치고 잠시 기다려야 합니다.
조직에 대한 계정 한도를 초과했거나 조직이 아직 초기화되고 있기 때문에 계정을 추가할 수 없음을 나타내는 오류가 발생하면 조직을 생성한 후 한 시간 동안 기다렸다가 다시 시도하세요. 오류가 지속될 경우 AWS 지원에 문의하세요.
2단계: 조직 단위 만들기
이 섹션의 단계에서는 조직 단위(OU)를 만들고 조직 단위 내에 멤버 계정을 배치합니다. 작업이 완료되면 계층 구조가 다음 그림처럼 보일 것입니다. 관리 계정은 계속 루트에 남습니다. 멤버 계정 하나는 생산 OU로 이동하고 다른 멤버 계정은 생산 OU의 하위 OU인 MainApp OU로 이동합니다.
- AWS Management Console
-
OU를 만들거나 채우려면
다음 단계에서는 객체 자체의 이름이나 객체 옆의 라디오 버튼을 선택할 수 있는 객체와 상호 작용합니다.
다음 단계에서는 메뉴 선택 시 연결된 객체에 대해 작업을 수행할 수 있도록 라디오 버튼을 선택할 것입니다.
-
AWS Organizations 콘솔에서 AWS 계정 페이지로 이동합니다.
-
루트(Root) 컨테이너 옆의 확인란
을 선택합니다.
-
작업 드롭다운을 선택한 다음 조직 단위에서 새로 생성을 선택합니다.
-
루트에 조직 단위 생성(Create organizational unit in Root) 페이지에서 조직 단위 이름(Organizational unit name)에 Production
을 입력한 다음 조직 단위 생성(Create organizational unit)을 선택합니다.
-
새 Production OU 옆에 있는 확인란
을 선택합니다.
-
작업(Actions)을 선택한 다음 조직 단위(Organizational unit)에서 새로 만들기(Create new)를 선택합니다.
-
Production에 조직 단위 생성(Create organizational unit in Production) 페이지에서 두 번째 OU 이름에 MainApp
을 입력한 다음 조직 단위 생성(Create organizational unit)을 선택합니다.
이제 멤버 계정을 이상의 OU로 이동할 수 있습니다.
-
AWS 계정 페이지로 돌아가서 프로덕션 OU 옆에 있는 삼각형
을 선택해 그 아래의 트리를 확장합니다. 이렇게 하면 Production의 하위 항목인 MainApp OU가 표시됩니다.
-
333333333333 옆에 있는 확인란
(이름 아님)을(를) 선택하고 작업 선택 후 AWS 계정에서 이동을 선택합니다.
-
AWS 계정 '333333333333' 이동 페이지에서 프로덕션 옆에 있는 삼각형을 선택하여 확장합니다. MainApp 옆에 있는 라디오 버튼
(이름 아님)을(를) 선택한 다음 AWS 계정 이동을 선택합니다.
-
222222222222 옆에 있는 확인란
(이름 아님)을(를) 선택하고 작업 선택 후 AWS 계정에서 이동을 선택합니다.
-
AWS 계정 '222222222222' 이동 페이지의 프로덕션 옆에 있는 라디오 버튼(이름이 아님)을 선택한 다음 AWS 계정 이동을 선택합니다.
3단계: 서비스 제어 정책 생성
이 섹션의 단계에서는 3가지 서비스 제어 정책(SCP)을 만들고 루트와 OU에 연결해 사용자가 조직 계정으로 할 수 있는 일을 제한합니다. 첫 번째 SCP는 모든 멤버 계정 사용자가 여러분이 구성한 어떤 AWS CloudTrail 로그도 생성하거나 수정하지 못하게 합니다. 관리 계정은 어떤 SCP의 영향도 받지 않으므로 CloudTrail SCP를 적용하고 나면 관리 계정에서 로그를 생성해야 합니다.
조직에 대해 서비스 제어 정책 유형 활성화
루트 내의 OU에 특정 유형의 정책을 연결하려면, 먼저 해당 조직에 정책 유형을 활성화해야 합니다. 정책 유형은 기본적으로 비활성화되어 있습니다. 이 섹션의 단계에서는 조직에 대해 서비스 제어 정책(SCP) 유형을 활성화하는 방법을 확인할 수 있습니다.
- AWS Management Console
-
조직에 대해 SCP를 활성화하려면
-
정책 페이지로 이동한 다음 서비스 제어 정책을 선택합니다.
-
서비스 제어 정책 페이지에서 서비스 제어 정책 활성화(Enable service control policies)를 선택합니다.
이제 조직에서 SCP를 만들 수 있음을 알리는 녹색 배너가 나타납니다.
SCP 생성
이제 조직에서 서비스 제어 정책을 활성화했으므로 이 자습서에 필요한 세 가지 정책을 만들 수 있습니다.
- AWS Management Console
-
CloudTrail 구성 작업을 차단하는 첫 번째 SCP를 만들려면
-
정책 페이지로 이동한 다음 서비스 제어 정책을 선택합니다.
-
서비스 제어 정책 페이지(Service control policies)에서 정책 생성(Create policy)을 선택합니다.
-
정책 이름(Policy name)에 Block
CloudTrail Configuration Actions
을 입력합니다.
-
정책 섹션의 오른쪽에 있는 서비스 목록에서 CloudTrail을 서비스로 선택합니다. 그런 다음 AddTags, CreateTrail, DeleteTrail, RemoveTags, StartLogging, StopLogging 및 UpdateTrail 작업을 선택합니다.
-
오른쪽 창에서 리소스 추가를 선택하고 CloudTrail 및 모든 리소스를 지정합니다. 그런 다음 리소스 추가를 선택합니다.
왼쪽의 정책 문은 다음과 유사해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567890123",
"Effect": "Deny",
"Action": [
"cloudtrail:AddTags",
"cloudtrail:CreateTrail",
"cloudtrail:DeleteTrail",
"cloudtrail:RemoveTags",
"cloudtrail:StartLogging",
"cloudtrail:StopLogging",
"cloudtrail:UpdateTrail"
],
"Resource": [
"*"
]
}
]
}
-
정책 생성을 선택합니다.
두 번째 정책은 Production OU의 사용자와 역할에 대해 활성화하려는 서비스와 작업의 허용 목록을 정의합니다. 작업이 완료되면 Production OU의 사용자는 나열된 서비스 및 작업에만 액세스할 수 있습니다.
- AWS Management Console
-
Production OU에 대해 승인된 서비스를 허용하는 두 번째 정책을 생성하려면
-
서비스 제어 정책(Service control policies) 페이지에서 정책 생성(Create policy)을 선택합니다.
-
정책 이름(Policy name)에 Allow
List for All Approved Services
을 입력합니다.
-
커서를 정책 섹션의 오른쪽 창에 놓고 다음과 같은 정책을 붙여 넣습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1111111111111",
"Effect": "Allow",
"Action": [
"ec2:*",
"elasticloadbalancing:*",
"codecommit:*",
"cloudtrail:*",
"codedeploy:*"
],
"Resource": [ "*" ]
}
]
}
-
정책 생성을 선택합니다.
최종 정책은 MainApp OU에서 사용이 차단된 서비스의 거부 목록을 제공합니다. 이 자습서의 경우 MainApp OU에 있는 계정의 Amazon DynamoDB에 대한 액세스를 차단합니다.
- AWS Management Console
-
MainApp OU에서 사용할 수 없는 서비스에 대한 액세스를 거부하는 세 번째 정책을 생성하려면
-
서비스 제어 정책(Service control policies) 페이지에서 정책 생성(Create policy)을 선택합니다.
-
정책 이름(Policy name)에 Deny
List for MainApp Prohibited Services
을 입력합니다.
-
정책(Policy) 섹션의 왼쪽에서 Amazon DynamoDB를 서비스로 선택합니다. 작업으로 모든 작업을 선택합니다.
-
왼쪽 창에서 리소스 추가(Add resource)를 선택하고 DynamoDB 및 모든 리소스(All Resources)를 지정합니다. 그런 다음 리소스 추가를 선택합니다.
오른쪽의 정책 문이 다음과 유사하게 업데이트됩니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [ "dynamodb:*" ],
"Resource": [ "*" ]
}
]
}
-
[Create policy]를 선택하여 SCP를 저장합니다.
OU에 SCP 연결
이제 SCP가 루트에서 활성화되었고, SCP를 루트와 OU에 연결할 수도 있습니다.
- AWS Management Console
-
루트와 OU에 정책을 연결하려면
-
AWS 계정 페이지로 이동합니다.
-
AWS 계정 페이지에서 루트(Root)(라디오 버튼이 아닌 이름)를 선택하여 세부 정보 페이지로 이동합니다.
-
루트 세부 정보 페이지에서 정책(Policies) 탭을 선택한 다음 서비스 제어 정책(Service Control Policies)에서 연결(Attach)을 선택합니다.
-
서비스 제어 정책 연결(Attach a service control policy) 페이지에서 Block
CloudTrail Configuration Actions
라는 SCP 옆의 라디오 버튼을 선택한 다음 연결(Attach)을 선택합니다. 이 자습서에서는 모든 멤버 계정에 영향을 미치도록 루트에 연결하므로 다른 사람이 CloudTrail 구성을 변경하지 못합니다.
루트(Root) 세부 정보 페이지의 정책(Policies) 탭에서 이제 2개의 SCP가 루트에 연결된 것이 보입니다. 방금 연결한 것과 기본 FullAWSAccess
SCP입니다.
-
다시 AWS 계정 페이지로 이동해 프로덕션(Production) OU(라디오 버튼이 아닌 이름)를 선택하여 세부 정보 페이지로 이동합니다.
-
Production OU의 세부 정보 페이지에서 정책(Policies) 탭을 선택합니다.
-
서비스 제어 정책(Service Control Policies)에서 연결(Attach)을 선택합니다.
-
서비스 제어 정책 연결(Attach a service control policy) 페이지에서 Allow List for All
Approved Services
옆의 라디오 버튼을 선택한 다음 연결(Attach)을 선택합니다. 이렇게 하면 Production의 멤버 계정에 속한 사용자와 역할이 승인된 서비스에 액세스할 수 있습니다.
-
정책(Policies) 탭을 다시 선택하면 2개의 SCP가 OU에 연결된 것이 보입니다. 방금 연결한 것과 기본 FullAWSAccess
SCP입니다. 하지만 FullAWSAccess
SCP는 모든 서비스와 작업을 허용하는 허용 목록이기 때문에, 승인된 서비스만 허용되도록 하려면 이제 이 SCP를 분리해야 합니다.
-
Production OU에서 기본 정책을 제거하려면 FullAWSAccess의 라디오 버튼을 선택하고, 분리(Detach)를 선택한 다음 확인 대화 상자에서 정책 분리(Detach policy)를 선택합니다.
이 기본 정책을 제거하면, Production OU 아래에 있는 모든 멤버 계정은 이전 단계에서 연결한 허용 목록 SCP에 없는 모든 작업 및 서비스에 대한 액세스 권한을 즉시 잃어버리게 됩니다. 모든 승인된 서비스에 대한 허용 목록 SCP에 포함되지 않은 작업을 사용하기 위한 요청은 거부됩니다. 이러한 결과는 계정의 관리자가 멤버 계정 중 하나의 사용자에게 IAM 권한 정책을 연결하여 다른 서비스에 대한 액세스 권한을 부여하는 경우에도 마찬가지입니다.
-
이제 Deny List for MainApp
Prohibited services
라는 SCP를 연결해 MainApp OU에 있는 계정 사용자 전원이 제한된 서비스를 이용하지 못하도록 할 수 있습니다.
이렇게 하려면 AWS 계정 페이지로 이동하여 삼각형 아이콘을 선택하여 프로덕션(Production) OU의 분기를 확장한 다음 MainApp OU(라디오 버튼이 아닌 이름)를 선택해 해당 콘텐츠로 이동합니다.
-
MainApp 세부 정보 페이지에서 정책(Policies) 탭을 선택합니다.
-
서비스 제어 정책(Service Control Policies)에서 연결(Attach)을 선택한 다음, 사용 가능한 정책 목록에서 MainApp 금지 서비스에 대한 거부 목록(Deny List for MainApp Prohibited Services) 옆에 있는 라디오 버튼을 선택한 다음 정책 연결(Attach policy)을 선택합니다.
4단계: 조직 정책 테스트
이제 멤버 계정의 사용자로 로그인해 다양한 AWS 작업을 수행해볼 수 있습니다.
-
관리 계정 사용자로 로그인하면, IAM 권한 정책이 허용하는 모든 작업을 수행할 수 있습니다. SCP는 관리 계정이 어떤 루트나 OU에 있더라도 계정의 사용자나 역할에는 영향을 주지 않습니다.
-
222222222222 계정의 사용자로 로그인하면, 허용 목록에서 허용되는 모든 작업을 수행할 수 있습니다. AWS Organizations는 허용 목록에 없는 서비스에서 작업을 수행하려는 시도를 거부합니다. 또한 AWS Organizations는 CloudTrail 구성 작업 수행도 거부합니다.
-
333333333333 계정의 사용자로 로그인하면, 허용 목록에서 허용되고 거부 목록에서 차단되지 않는 모든 작업을 수행할 수 있습니다. AWS Organizations는 허용 목록 정책에 없는 작업과 거부 목록 정책에 있는 작업을 수행하려는 시도를 거부합니다. 또한 AWS Organizations는 CloudTrail 구성 작업 수행도 거부합니다.