본문 바로가기
6. 보안 Security

IAM with Identity Domain Guide

by primely 2023. 3. 31.

https://docs.oracle.com/en-us/iaas/Content/Identity/home.htm

IAM은 OCI의 서비스로 OCI를 관리할 수 있는 사용자를 관리하고 클라우드 리소스에 접근할 수 있는 사용자의 권한을 제어할 수 있다.

그리고  Oracle IdP(identity provider) Service를 통해 다양한 서비스와 SSO연동이 가능하다 .(Domain Type선택 필요)

Policy설정으로 User나 Resource에 특정 Resource를 사용/관리할 수 있는 권한을 부여할 수 있다.

Policy설정시 Identities는 Group단위로 설정이 가능하다.

- User는 User Group단위로 설정

- Resource는 Dynamic Group단위로 설정

 

new IAM서비스인 IAM with Identity Domain이 적용된 Tenancy는 아래처럼 로그인화면에 도메인이 표시가 된다.

도메인이 여러개인 경우 선택할 수 있다.

1. Compartments

- OCI내 다양한 Resource와 Domain을 담을 수 있는 그릇
- 모든 Resource나 Domain은 하나의 Compartment에는 담겨 있어야 한다

- Compartment는 Resource에 대한 권한관리를 고려하여 부서단위/Project단위/운영-개발 단위로 나눈다.

 

> 예시: Compute생성 시 Compartment지정

Resource를 생성/조회하기 전에 Compartment를 확인한다

> Compartment 추가하기

- 메뉴: Identity & Security>Compartments

처음 Compartments메뉴에 가면 tenancy이름과 동일한 compartment가 조회되는 것을 확인할 수 있다.

이 Default로 생성되어 있는 Compartment를 Root Compartment라고 한다.

적절한 이름을 입력하고 Parent Compartment를 선택한뒤 Compartment를 생성한다.

> Compartment에 대한 상세정보는 아래Link를 참조

https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingcompartments.htm

 

2. Domains

Domain은 유저/권한관리와 Application통합관리(SSO, OAuth) 및 보안설정을 위한 컨테이너이다.

Default Domain은 Tenancy생성 시 자동으로 생성되고 필요한 경우 목적에 따라 여러 Domain을 생성하여 사용자를 구분하여 관리할 수 있다.

Audit log report에서 Login한 User의 Audit Log를 조회

> Domain 생성하기

Domain을 생성할때 Domain Type과 Domain Administrator, Compartment를 선택해야 한다.

Domain을 생성하면 입력한 Domain Administrator 메일로 해당 도메인에 대한 Administrator account생성을 위한 welcome email이 온다.

일반적인 Cloud관리가 목적인 경우 Domain Type을 Free로 선택한다.

Welcome mail에 있는 Administrator account 생성Link를 통해 Password를 입력하고 계정을 생성한다.

Activate Your Acount를 클릭하고 아래처럼 Password를 입력한다.

실제 업무에 사용되는 Resource를 위해서는 Default Domain을 사용하지 않고 아래처럼 Comparment와 Domain을 별도로 생성하여 사용한다.

운영과 개발환경의 권한분리

> Domain Type

https://docs.oracle.com/en-us/iaas/Content/Identity/sku/overview.htm

1. Free identity domains(included)
- 각 OCI 테넌시는 OCI 리소스(네트워크, 컴퓨팅, 스토리지 등) 및 OCI PaaS에 대한 액세스를 관리하기 위한 프리 티어
  기본  OCI IAM Identity Domain 을 포함
2. Oracle Apps(included)
- 수많은 Oracle Cloud 애플리케이션(HCM, CRM, ERP, 업계 애플리케이션 등)에는 Oracle Apps 도메인을 통한
  OCI IAM 사용이 포함될 수 있다
- 고객은 이 도메인에 모든 직원을 추가하여 Oracle Cloud 애플리케이션 서비스에 대한 SSO를 활성화하고 이 도메인을 
  사용하여 OCI 리소스의 일부 또는 전체에 대한 액세스를 관리할 수 있다.
3. Oracle Apps Premium
- Oracle Apps domain을 Oracle SaaS외에  Oracle E-Business Suite, Oracle Databases, On-Prem, OCI에 호스팅된
  Application에까지 적용할 수 있다.
- 이 서비스는 전체 기능을 갖추고 있지만 Oracle target과 함께 사용하는 것으로 제한되는 저렴한 서비스이다.
4. External identity domains
- 직원이 아닌 파트너나 고객들에 대한 OCI IAM의 모든기능을 제공한다.
- App Gateway and Provisioning Bridge같이 직원이 아닌경우에 사용되지 않을 특정 Enterprise기능은 제외된다.
- 다음의 기능이 포함되어 있음: social logon, self-registration, terms-of-use consent, and profile/password management
5. Premium identity domains
- 대상 애플리케이션에 대한 제한 없이 OCI IAM의 모든 기능을 제공한다.

 

> Domain에 대한 상세정보는 아래Link를 참조

https://docs.public.oneportal.content.oci.oraclecloud.com/en-us/iaas/Content/Identity/domains/overview.htm#overview-identity-domains

 

3. User관리

User가 속할 Group을 먼저 생성한다.

Admin Group에 User를 할당시키려는 경우라면 추가 생성없이 이미 만들어져있는 Administrators Group을 사용하면 된다.

> Group 생성

 

신규Group이 필요한 경우 Group을 생성한다.

(기본 Administrator group을 사용하려는 경우 추가 생성은 불필요)

Admin권한이 필요한 경우 Administrators권한을 부여한다.

할당할 User가 있는경우 생성시 선택가능하다.

 

> User생성

User가 속할 Group을 Check하고 생성한다.

Admin권한 부여를 하려면 Administrator권한을 준다.

 

Username으로 Email주소가 아닌 것을 사용할 수도 있다.(아래Link참고)

- User the email address as the username 체크를 해제하고 Email아닌 Username 등록
- 이 때 같은 Email로 여러 Username을 등록할 수도 있다.

https://docs.oracle.com/en-us/iaas/Content/Identity/users/create-user-accounts.htm

Email주소를 입력안하도록 하려면 아래의 'Primary email address required' 가 Uncheck되어야 한다.

 

등록한 메일로 아래와 같이 welcome mail이 도착한다.

Active Your Account를 누르면 아래처럼 비밀번호 재설정 창이 뜬다. 비밀번호를 입력하면 새User로 로그인이 가능하다.

4. User비밀번호 초기화하기

메뉴: Identity & Security > Identity > Domains
비밀번호를 초기화할 User 선택
Reset password를 눌러 비밀번호 초기화

- Reset factors: MFA설정을 초기화 하여 다른 기기로 변경할 때 사용

 

User Credentials

-  API key: CLI, SDK접속 시
-  Auth token: third-part APIs들과 인증 시 활용
-  Customer Secret Key: Object Storage에 S3 호환 API 사용시 활용
-  OAuth 2.0 client credentials: OAuth기반 인증시 사용
-  SMTP credentials: Email Delivery Service에서 사용
-  Database passwords: ADB의 DB Password 관리시 사용

https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/usercredentials.htm

 

> User에 대한 상세정보는 아래Link를 참조

https://docs.oracle.com/en-us/iaas/Content/Identity/users/about-managing-users.htm

 

4. Policy

Policy설정방법은 아래 2가지 방식이 있다

Policy Use Case방식
Manual Editor방식

 

 

Allow <domain_name>/<subject> to <verb> <resource-type> in <location> where <conditions>

(domain_name을 생략하면 default domain을 가리킨다.)

사용예)

- CloudTest Compartment에 있는 모든Resoure에 대한 관리권한을 default Domain의 CloudTest Group에 부여

Allow group default/CloudTest to manage all-resources in compartment CloudTest

- Tenancy에 있는 모든Resoure에 대한 관리권한을 default Domain의 CloudTest Group에 부여

Allow group default/CloudTest to manage all-resources in tenancy

- Resource Type
https://docs.oracle.com/en-us/iaas/Content/Identity/policyreference/policyreference_topic-ResourceTypes.htm

- IAM은 family resource type이 없고 개별 resource type만 존재한다.

https://docs.oracle.com/en-us/iaas/Content/Identity/policyreference/iampolicyreference.htm#top

- Policy 설정 예시

https://docs.oracle.com/en-us/iaas/Content/Identity/policiescommon/commonpolicies.htm

- Using Tags to Manage Access

https://docs.oracle.com/en-us/iaas/Content/Tagging/Tasks/managingaccesswithtags.htm

 

※ 일반업무에는 Admin User말고 User를 추가로 생성하여 사용한다.

 

> Subject

Subject에는 다음의 값들이 올 수 있다.

Syntax: group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | 
dynamic-group id <dynamic-group_ocid>| any-group | any-user

 

> Condition

https://docs.oracle.com/en-us/iaas/Content/Identity/policiesadvfeatures/policyadvancedfeatures.htm#conditions

https://docs.oracle.com/en-us/iaas/Content/Identity/policyreference/policyreference_topic-General_Variables_for_All_Requests.htm

- request: 사용자 또는 서비스가 요청하는 작업에 대한 정보

- target: 정책이 적용되는 대상

예1) 특정 compartment를 제외한 곳에 있는 cloud network의 관리권한을 부여

Allow group  NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..'

예2)  Group이름이 "A-Users-"로 시작하는 Group의 관리권한을 부여
Allow group  GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/
예3)  Group의 tag가 Admin인 Group들에 Test Compartment의 모든 리소스에 대한 관리권한을 부여
Allow all-group to manage all-resources in compartment Test where request.principal.group.tag.EmployeeGroup.Role='Admin'

 

> Policy Inheritance

Compartment는 부모Compartment로부터 권한을 상속받는다.

예시) Allow group Administrators to manage all-resources in tenancy

- tenancy는 root compartment

- 이 설정으로 Administrators는 Root Compartment하위의 모든 Compartment에 대한 권한을 가진다.

 

> Policy Attachment

Policy를 등록하는 위치(Compartment)에 따라 Compartment를 지정하는 방식이 달라진다.

예시) NetworkAdmins group에 Compartment C에 있는 VCNs을 관리할 수 있는 Policy설정

- root Compartment에서 Policy추가

Allow group NetworkAdmins to manage virtual-network-family in compartment A:B:C

- Compartment A에서 Policy추가

Allow group NetworkAdmins to manage virtual-network-family in compartment B:C

- Compartment B or C에서 Policy추가

Allow group NetworkAdmins to manage virtual-network-family in compartment C

 

> Policy에 대한 상세정보는 아래Link를 참조

https://docs.oracle.com/en-us/iaas/Content/Identity/policieshow/how-policies-work.htm

https://docs.oracle.com/en-us/iaas/Content/Identity/policysyntax/policy-syntax.htm

https://docs.oracle.com/en-us/iaas/Content/Identity/policyreference/policyreference_topic-ResourceTypes.htm

 

> 적용예

https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/commonpolicies.htm

 


작성자: 손창호(primelyson@gmail.com) / Cloud Engineer, 정보시스템감리사, DAP, PIA

개인의 시간을 할애하여 작성된 글로서 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

'6. 보안 Security' 카테고리의 다른 글

Email을 MFA Factor로 추가하기  (0) 2023.07.20
MFA - Without Identity Domains (IDCS)  (0) 2023.05.31
MFA - IAM with Identity Domain  (0) 2023.03.30
Object Storage 변경로그조회  (0) 2023.02.17
IAM with Identity Domain  (0) 2023.02.14

댓글