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
일반적으로 Compartment 또는 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
계층적 Compartment
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
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.