TheKoguryo's 기술 블로그

Version 2019.06.03

6.5 Policy 개념 잡기

IAM Policy

IAM Policy는 OCI 자원에 대한 접근 정책입니다. 하나의 정책은 일반적으로 사용자 그룹에 특정 Compartment에 속한 특정 타입의 자원에 대한 권한을 허용하는 것을 정의하는 것으로 생각하면 하면 됩니다.

Policy 문법

모든 Policy는 다음과 같은 문법으로 되어 있습니다.

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

자세한 문법은 OCI Documentation을 보시기 바랍니다.
https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policysyntax.htm

Policy 일반적인 형식

자원에 대한 권한은 아래와 같은 Policy를 통해 정의되면, Tenancy 생성시 관리자에 대해서는 모든 권한이 부여되고, 별도 Policy를 적용하지 않은 일반 사용자, 그룹은 아무런 권한이 일절 없습니다. Policy로 명시적으로 허용한 권한만을 부여합니다.

많이 사용하는 Policy는 아래와 같이 사용자 그룹이 compartment 내의 특정 자원 유형에 대해서 읽기, 쓰기, 전체 권한 등을 부여하는 형식으로 정의합니다.

Allow group <group_name> to <verb> <resource-type> in compartment <compartment_name>

일부에 대해서는 compartment가 아닌 tenancy 전체에 대해 적용되는 Policy를 정의하기도 합니다.

Allow group <group_name> to <verb> <resource-type> in tenancy

Subjects

일반적으로 group이 오며, 특정 사용자는 지정할 수 없습니다. 모든 사용자(any-user)는 지정할 수 있습니다.

참고: https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policysyntax.htm#one

Verbs

Verb 설명 대상 사용자
inspect 사용자 정의 메타데이터, 보안 정보를 제외한 자원을 리스트(조회)할 수 있는 권한 조회가 필요한 제3자 사용자
read inspect에 추가하여 사용자 정의 메타데이터도 조회할 수 있는 권한 포함 조회가 필요한 내부 사용자
use read에 추가하여 자원을 사용할 수 있는 권한 포함. 자원 생성, 삭제에 대한 권한은 없음.
일반적으로 업데이트 권한도 포함하지만, 생성과 동일한 역활을 하는 업데이트 권한은 포함하지 않음
일반 사용자
manage 자원에 대한 모든 권한 포함 관리자

참고: https://docs.cloud.oracle.com/iaas/Content/Identity/Reference/policyreference.htm#Verbs

Resource-Type

사용할 자원을 지칭하여, 하나의 개별 자원 또는 동일한 자원 전체 등을 지칭할 수 있습니다.

  • individual resource-type : 예, vcns, subnets, instances, volumes 등등
  • family resource-type : 예, virtual-network-family, instance-family, volume-family 등등
  • all-resources : Compartment 또는 Tenancy에 있는 모든 자원

참고: https://docs.cloud.oracle.com/iaas/Content/Identity/Reference/policyreference.htm#Resource

Locations

일반적으로 Comparment 또는 tenancy를 지정합니다.

참고: https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policysyntax.htm#four

Conditions

추가적인 상세 조건을 지정할 수 있습니다.

참고: https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policysyntax.htm#five

계층적 Comparment

Compartment가 여러 계층으로 이루어 진 경우, 부모 Compartment에 부여된 Policy는 자식 Compartment가 상속받게 됩니다.

Policy 예시

Tenancy 기준으로 특정 그룹에 사용자 관리 권한을 부여하여 Policy 예시

Allow group HelpDesk to manage users in tenancy

Compartment 기준으로 모든 자원을 관리하도록 관리자 그룹을 지정하는 Policy 예시

Allow group A-Admins to manage all-resources in compartment Project-A

Compartment 기준으로 특정 자원 패밀리에만 관리하도록 부분 관리자 그룹을 지정하는 Policy 예시

Allow group A-Admins to manage instance-family in compartment Project-A
Allow group A-Admins to manage volume-family in compartment Project-A
Allow group A-Admins to use virtual-network-family in compartment Networks

사용할 만한 Policy 예시들

일반적으로 사용할 만한 Policy에 대해서 Common Policies로 문서에서 제공하고 있습니다. Policy 생성시 참고하시기 바랍니다.
https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/commonpolicies.htm



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