주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
태그 기반 Oracle Cloud Infrastructure Identity and Access Management 정책 심층 분석
소개
Oracle Cloud Infrastructure Identity and Access Management(OCI IAM) 정책은 강력하고 안전한 클라우드 환경의 초석입니다. OCI 리소스에 대한 액세스를 제어하는 강력하고 유연한 메커니즘을 제공하여 권한이 부여된 사용자 및 서비스만 지정된 리소스에 대해 특정 작업을 수행할 수 있도록 보장합니다.
OCI IAM 정책은 사람이 읽을 수 있는 구문으로 작성된 선언문 집합으로, 누가가 무엇에 액세스할 수 있는지 그리고 어떤 조건에 따라 액세스할 수 있는지 지정합니다. 이러한 정책을 통해 조직은 최소 권한 원칙을 적용할 수 있으며, 사용자 및 서비스에 자신의 작업을 수행하는 데 필요한 권한만 부여할 수 있습니다. 이는 운영 효율성을 유지하면서 보안 위험을 최소화합니다.
OCI IAM 정책은 구획, 테넌시 및 특정 리소스를 포함한 OCI 계층의 다양한 레벨에서 적용되므로 복잡한 조직 구조에 매우 적응할 수 있습니다. OCI의 정책 상속 및 구획화를 통해 관리자는 특정 보안 및 운영 요구사항에 맞게 세분화된 제어를 설정할 수 있습니다. OCI 정책에 대한 자세한 내용은 정책 시작하기를 참조하십시오.
이 자습서에서는 정책 최적화의 중요성에 대해 알아보고, 최적의 결과를 얻기 위해 정책을 미세 조정하기 위한 모범 사례를 탐색하고, 정책 최적화를 최대한 활용할 수 있는 시나리오를 강조합니다.
목표
-
정책 구성 요소 및 구문을 이해합니다.
-
OCI IAM 정책 튜닝이 확장성 및 정책 제한에 중요한 이유를 확인해 보세요.
-
실행 가능한 모범 사례를 제공합니다.
-
정책 관리에서 태그 지정의 역할을 강조합니다.
-
실제 사용 사례를 소개하여 일반적인 과제와 솔루션을 강조합니다.
필요 조건
-
OCI 테넌시에 액세스합니다.
-
OCI 개념에 대한 기본 이해
-
OCI IAM에 대한 지식
-
정책 구문에 대한 기본적인 이해
-
구획화 및 태깅 기본사항 이해
-
최소 권한 원칙 인식
-
OCI 정책은 지식을 제한합니다.
-
거버넌스 및 규제준수 표준에 대한 경험.
정책 구성 요소 및 구문 이해
OCI IAM 정책을 효과적으로 튜닝하려면 해당 정책의 구조와 주요 구성 요소를 이해해야 합니다. OCI의 정책은 누가(주체), 무엇(리소스)에 대한 작업, 어디에(범위)를 지정하여 권한을 정의합니다. 우리는 이것을 분해하자 :
OCI IAM 정책의 주요 구성 요소
-
주체(제목): 액세스를 요청하는 엔티티로, 다음 중 하나일 수 있습니다.
-
사용자: 일반적으로 사람을 나타내는 OCI 내의 개별 계정입니다. 자세한 내용은 사용자 관리를 참조하십시오.
-
그룹: 공유 액세스가 필요한 사용자 모음입니다. 자세한 내용은 Working with Groups을 참조하십시오.
-
동적 그룹: 특정 규칙으로 식별되는 일련의 OCI 리소스(예: 컴퓨트 인스턴스, 함수)입니다. 동적 그룹의 리소스는 태그 또는 메타데이터와 같은 조건에 따라 자동으로 그룹화됩니다. 자세한 내용은 동적 그룹 관리를 참조하십시오.
-
리소스 주체: 자체적으로 작동하는 서비스(예: OCI Functions 또는 Oracle Autonomous Database)입니다. 리소스 주체를 통해 서비스는 명시적 자격 증명 없이도 OCI 및 기타 리소스를 사용하여 안전하게 인증할 수 있습니다. 자세한 내용은 Resource Principal Authentication을 참조하십시오.
-
인스턴스 주체: 컴퓨트 인스턴스와 관련된 리소스 주체의 유형입니다. 인스턴스에서 실행되는 애플리케이션에 인증서를 포함하지 않고도 OCI IAM 정책을 사용하여 OCI 서비스(예: OCI Object Storage 또는 Identity)와 직접 상호 작용할 수 있습니다. 자세한 내용은 Instance Principals을 참조하십시오.
-
-
작업(동사): 주체가 수행할 수 있는 작업을 지정합니다.
inspect
: 리소스에 대한 메타데이터를 확인합니다.read
: 리소스 내의 메타데이터 및 데이터를 봅니다.use
: 읽기 작업 및 제한된 관리 작업을 수행합니다.manage
: 리소스 생성 및 삭제를 포함하여 모든 작업을 수행합니다.
자세한 내용은 Operations을 참조하십시오.
-
리소스(리소스 유형): 다음과 같이 작업이 적용되는 OCI 리소스 유형을 정의합니다.
- 컴퓨팅 인스턴스, 스토리지 버킷, VCN, 데이터베이스 등
- 관리 향상을 위해 구획을 사용하여 계층적으로 리소스를 구성할 수 있습니다.
자세한 내용은 리소스를 참조하십시오.
-
범위(위치): 정책이 적용되는 위치를 지정합니다.
- 구획: 계층적 조직을 사용으로 설정하는 리소스에 대한 논리적 컨테이너입니다.
- 테넌시: 일반적으로 전역 권한에 사용되는 전체 OCI 계정입니다.
자세한 내용은 Location을 참조하십시오.
-
일치 규칙(조건): 조건을 하나 이상 지정합니다. 논리적 OR 또는 AND에 대해 각각 any 또는 all을 여러 조건과 함께 사용합니다.
- 단일 조건에 대한 구문:
variable =|!= value
. - 여러 조건에 대한 구문:
any|all {<condition>,<condition>,...}
.
자세한 내용은 Conditions을 참조하십시오.
- 단일 조건에 대한 구문:
보너스 팁: OCI IAM 정책의 Sets-Intersect Concept 이해
OCI IAM 정책의 sets-intersect는 두 값 집합 간에 겹치는 경우에만 액세스 권한을 부여하는 데 사용됩니다. 이렇게 하면 특정 사용자 또는 그룹의 정책을 하드코딩하는 대신 그룹 멤버쉽, 리소스 태그 또는 기타 속성에 따라 권한이 동적으로 부여됩니다.
-
OCI IAM 정책의 Sets-Intersect 예
Allow any-user to manage database-family-resources in tenancy where sets-intersect(request.groups.name, target.resource.compartment.tag.database.admins)
정책 설명 중단:
-
임의 사용자 허용: 이 정책은 특정 그룹 멤버쉽에 관계없이 OCI의 인증된 사용자에게 적용됩니다.
-
데이터베이스-패밀리 리소스 관리: 모든 데이터베이스 관련 리소스(자율운영 데이터베이스, 데이터베이스 시스템, 백업 등)에 대한 완전한 관리 제어 권한을 부여합니다.
-
테넌시 내: 정책은 전체 테넌시(모든 구획)에 적용됩니다.
-
여기서 sets-intersect(
request.groups.name
,target.resource.compartment.tag.database.admins
)request.groups.name
: 사용자가 속한 그룹을 나타냅니다.target.resource.compartment.tag.database.admins
: 해당 컴파트먼트의 데이터베이스 리소스를 관리할 수 있는 허용된 그룹 목록이 포함된 컴파트먼트의 태그입니다.- sets-intersect(...): 사용자가 태그에 나열된 하나 이상의 그룹에 속하는 경우에만 액세스가 부여되도록 합니다.
-
대규모 OCI IAM 정책 모델
OCI IAM 정책은 OCI에서 워크로드를 보호하는 기본 요소 중 하나입니다. 고객을 위해 대규모 워크로드를 확장하고 지원할 수 있어야 합니다. 따라서 모든 규모의 워크로드에 대해 작동하는 OCI의 정책 한도 내에서 적은 수의 정책이 필요한 정책 모델을 생성했습니다. 다음은 확장 가능한 정책 모델을 채택하는 몇 가지 이유입니다. 자세한 내용은 IAM With Identity Domains Limits을 참조하십시오.
OCI IAM 정책 튜닝은 OCI의 정책 한도를 유지하면서 안전하고 확장 가능하며 효율적인 클라우드 환경을 유지하는 데 중요한 작업입니다. 이 과정이 필수적인 이유는 다음과 같습니다.
-
정책 제한 및 제약 조건: OCI는 테넌시 및 구획 내에서 생성할 수 있는 정책 수에 대해 특정 한도를 적용합니다. 정책이 최적화되지 않은 경우 대규모 또는 복잡한 환경에서 이러한 제한을 빠르게 소진할 수 있습니다.
-
주요 이유는 다음과 같습니다.
- 중복성 방지: 여러 구획 또는 리소스에 대해 유사한 정책을 반복적으로 정의하면 정책이 번창하여 관리가 어려워질 수 있습니다.
- OCI 정책 한도 내 유지: OCI에는 정책당 및 테넌시당 최대 정책 문 수가 있습니다. 튜닝을 수행하면 이러한 제한에 일찍 도달하지 않습니다.
-
-
관리 효율성 향상: 조직이 성장함에 따라 튜닝 없이 여러 구획에서 수백 개의 정책을 관리할 수 있습니다. 최적화된 정책:
- 총 정책 수를 줄여 관리를 간소화합니다.
- 명확성을 높이고 겹치거나 충돌하는 규칙을 방지하여 디버깅 및 감사를 보다 쉽게 수행할 수 있습니다.
-
복잡한 환경 전반의 확장성: 튜닝된 정책을 통해 다음과 같은 이점을 누릴 수 있습니다.
- 해당하는 경우 와일드카드 및 리소스 레벨 권한을 사용하여 구획별 또는 리소스별 규칙의 필요성을 줄입니다. 자세한 내용은 Conditions을 참조하십시오.
- 정책 상속을 활용하여 상위 레벨의 정책이 중복 명령문 없이 하위 구획에 적용되도록 합니다. 자세한 내용은 정책 상속을 참조하십시오.
- 사용자와 리소스를 논리적으로 그룹화하여 광범위하지만 여전히 안전한 권한을 적용합니다.
-
성능 최적화: OCI는 모든 액세스 요청 시 정책을 평가합니다. 중복되거나 지나치게 구체적인 정책이 많으면 평가 시간이 늘어날 수 있으므로 액세스 제어 결정이 느려질 수 있습니다. 최적화된 정책은 오버헤드를 줄여 보다 빠르고 효율적인 운영을 보장합니다.
-
최소 권한의 원칙 준수: 확장성을 튜닝하는 동안 최소 권한의 원칙을 유지 관리해야 합니다. 광범위하고 선택되지 않은 정책은 보안을 손상시킬 수 있으므로 최소한의 액세스와 확장성 사이의 균형을 유지하는 것이 중요합니다.
Policy Management에서 태그 지정의 역할
태그 지정은 리소스에 대한 세분화된 제어를 가능하게 함으로써 정책 관리를 크게 향상시키는 OCI의 강력한 기능입니다. 태그는 리소스에 연결할 수 있는 키-값 쌍으로 표현되는 메타데이터 레이블입니다. 특히 여러 팀과 프로젝트를 갖춘 복잡한 클라우드 환경에서 대규모 액세스 제어를 구성, 관리 및 시행할 수 있습니다. 자세한 내용은 태그 지정 개요를 참조하십시오.
태그 지정으로 정책 관리 향상 방법
-
리소스 식별 단순화: 태그는 프로젝트, 환경, 소유자 또는 부서와 같은 속성을 기반으로 리소스를 분류하는 통합된 방법을 제공합니다. 이렇게 하면 특정 리소스 하위 세트에 정책을 적용하는 프로세스가 간소화됩니다.
예:
Project: ProjectX
를 사용하여 리소스에 태그를 지정하면 대상 액세스 정책이 사용으로 설정됩니다.Allow group Developers to manage instances in tenancy where tag.Project = 'ProjectX'
-
동적 정책 적용 사용: 태그 기반 정책은 변화하는 리소스 속성에 맞게 조정됩니다. 예를 들어, 새 인스턴스에
Environment: Production
태그가 지정된 경우 운용 환경에 대해 정의된 정책을 자동으로 상속합니다.정책 예:
Allow group QA to inspect instances in tenancy where tag.Environment = 'Test'
-
다중 프로젝트 및 다중 팀 거버넌스 간소화: 태그는 리소스를 특정 팀 또는 프로젝트와 연계하여 액세스를 격리하는 데 도움이 됩니다. 이렇게 하면 여러 그룹의 권한을 관리할 때 복잡성이 줄어듭니다.
-
자동화 활용: 태그는 리소스 생성, 모니터링, 수명 주기 관리를 위한 자동화된 워크플로를 구동할 수 있습니다. 예를 들어, 비용 추적 스크립트는 CostCenter: Marketing 태그가 지정된 모든 리소스를 검색하여 세부 비용 보고서를 생성할 수 있습니다.
-
비용 관리 및 보고 향상: 태그를 사용하면 특정 프로젝트, 부서 또는 환경에 대한 비용 속성을 세분화할 수 있습니다. 이를 통해 조직은 지출을 추적하고 예산을 보다 효과적으로 최적화할 수 있습니다.
태그 거버넌스: 태그 관리 제어
정책 관리에서 일관성, 신뢰성 및 보안을 유지하려면 태그 생성 및 수정을 엄격하게 제어해야 합니다. 거버넌스는 태그가 올바르게 적용되고 조직 표준에 맞춰 조정되도록 보장합니다. 태그 관리를 특정 개인 또는 그룹으로 제한하는 것은 조직의 클라우드 환경 내에서 제어, 일관성 및 보안을 유지하는 핵심 요소입니다.
-
태그 관리를 제한해야 하는 이유
태깅은 리소스를 구성하고 제어하기 위한 강력한 도구이지만, 잘못 관리하면 일관되지 않거나 승인되지 않은 액세스 제어, 비용 추적 문제 및 거버넌스 문제로 이어질 수 있습니다. 조직은 태그를 관리할 수 있는 사용자에 대한 엄격한 정책을 구현하여 권한이 부여된 직원만 중요한 태그를 생성, 수정 또는 삭제할 수 있도록 하여 환경의 무결성을 유지할 수 있습니다.
-
무단 변경 방지: 태그는 비용 할당, 리소스 범주화, 액세스 제어와 같은 중요한 비즈니스 프로세스와 연결되는 경우가 많습니다. 태그 수정에 대한 무제한 액세스를 허용하면 허용되지 않거나 실수로 변경되어 작업이 중단되거나 리소스가 잘못 할당될 수 있습니다.
-
일관성 있는 태깅 표준 보장: 조직은 리소스를 구성하고 쉽게 추적할 수 있도록 지원하는 표준화된 태깅 스키마의 이점을 누릴 수 있습니다. 태그 관리를 정의된 관리자 그룹으로 제한함으로써 조직은 이러한 표준을 준수하도록 보장하여 태그 지정 방식의 단편화 및 불일치를 방지할 수 있습니다.
-
보안 및 규정 준수 유지: 태그를 활용하여 보안 정책 및 규정 준수 요구 사항을 적용할 수 있습니다. 예를 들어 태그는 환경(예: 운용, 개발) 또는 중요한 데이터 분류를 정의할 수 있습니다. 권한이 부여된 사용자만 이러한 태그를 수정할 수 있도록 허용하면 중요한 환경이 보호되고 액세스 제어가 올바르게 적용됩니다.
-
정책의 잘못된 구성 위험 감소: OCI의 태그 기반 정책(예: 리소스 액세스 제어)은 일관되고 정확한 태그 사용에 따라 달라집니다. 잘못된 그룹 또는 개인이 태그를 수정하거나 삭제할 수 있는 경우 실수로 액세스 정책이 지나치게 광범위하거나 제한적일 수 있습니다.
-
-
OCI에서 태그 관리를 제한하는 방법
OCI에서는 태그 생성, 업데이트 또는 삭제와 같은 태그 작업을 수행할 수 있는 사용자를 정의하는 OCI IAM 정책을 생성하고 적용하여 태그 관리를 제어할 수 있습니다. 이러한 정책은 특정 사용자, 그룹 또는 구획에 대한 액세스 권한을 부여하도록 조정할 수 있으므로 권한이 부여된 개인만 중요한 태그를 변경할 수 있습니다.
태그 관리를 특정 개인 또는 그룹으로 제한하는 몇 가지 방법은 다음과 같습니다.
-
그룹 기반 액세스 제어 사용: 태그 관리를 제어하는 첫번째 단계는 태그를 관리하는 데 필요한 권한이 특정 그룹에만 부여되도록 하는 것입니다. 예를 들어, 지정된 그룹(예:
TagAdmins
)에 태그 생성 및 업데이트를 처리할 수 있는 배타적 권한이 부여될 수 있습니다.OCI IAM 정책 예:
Allow group TagAdmins to manage tag-namespaces in tenancy
이 정책은
TagAdmins
그룹만 전체 테넌시에 걸쳐 태그 및 태그 네임스페이스를 생성, 수정 또는 삭제할 수 있도록 보장합니다. devops 엔지니어 또는 Terraform Runner 그룹과 같은 일부 그룹이 콘솔을 통해 생성된 태그를 스크립트에 사용할 수 있도록 허용하려면 다음 정책을 정의할 수 있습니다.Allow group devopsTeam to use tag-namespaces in tenancy Allow group terraformRunner to use tag-namespaces in tenancy Allow dynamic-group terraformRunner to use tag-namespaces in tenancy
-
세분화된 제어에 컴파트먼트 레벨 정책 사용: 태그 관리 정책은 컴파트먼트 레벨에서 적용할 수 있으므로 특정 컴파트먼트에만 태그 관리 액세스 권한이 있습니다. 예를 들어 태그 관리를 특정 프로젝트 또는 비즈니스 단위로 제한하려는 경우 관련 구획 내에서 태그 액세스를 제한하는 정책을 적용할 수 있습니다.
컴파트먼트별 태그 관리에 대한 예제 정책:
Allow group TagAdmins to manage tag-namespaces in compartment ProjectA
이렇게 하면
TagAdmins
그룹의 사용자만ProjectA
컴파트먼트 내의 태그를 관리할 수 있으므로 다른 컴파트먼트에 대한 액세스가 제한됩니다. 또한 사용자가 생성된 태그만 사용하도록 허용하고 컴파트먼트 레벨에서 수정하지 않도록 그룹을 생성할 수 있습니다.Allow group TagUser to use tag-namespaces in compartment ProjectA
-
태그 네임스페이스로 제어 태그 지정: OCI는 관련 태그를 함께 그룹화하는
tag namespaces
를 지원합니다. 특정 네임스페이스 내에서 태그를 관리할 수 있는 사용자를 제어할 수 있습니다. 이를 통해 특정 유형의 태그에 액세스할 수 있는 사용자를 보다 세부적으로 제어할 수 있습니다.네임스페이스별 태그 관리에 대한 정책 예:
Allow group TagAdmins to manage tag-namespaces in tenancy where tag.namespace = 'Billing'
이렇게 하면
TagAdmins
권한이 있는 사용자만 청구 네임스페이스 내에서 태그를 관리할 수 있으므로 비용 추적 태그에 대한 엄격한 거버넌스가 제공됩니다. -
태그 변경 감사 및 모니터링: 태그 관리를 안전하게 유지하기 위해 조직은 태그에 대한 변경 사항을 추적하기 위해 감사 및 모니터링 정책을 구현해야 합니다. OCI의 감사 로그는 태그 생성, 삭제 및 수정과 관련된 작업에 대한 가시성을 제공합니다. 이러한 로그를 모니터링하면 허용되지 않은 태그 수정 시도 또는 잘못된 관리를 제안하는 패턴을 식별할 수 있습니다.
-
실제 사용 사례에 대한 태그 기반 OCI IAM 정책
이제 위에서 배운 모든 것을 통해 실제 사용 사례에서 사용자 원칙 및 인스턴스 원칙에 대한 OCI IAM 정책을 튜닝해 보겠습니다. 그러나 이를 수행하기 전에 모든 고객이 사용 사례에 관계없이 요구하는 몇 가지 일반적인 정책이 있습니다.
-
공통 OCI IAM 정책:
-
사용자 관리를 위한 OCI IAM 정책:
IAMAdmin
그룹은 OCI IAM 도메인, 사용자, 그룹 등 OCI IAM 관련 구성을 관리하는 역할을 담당합니다.Allow group IAMAdmin to manage domains in tenancy Allow group IAMAdmin to manage users in tenancy Allow group IAMAdmin to manage groups in tenancy
-
태그 관리를 위한 OCI IAM 정책:
InfoSec
그룹은 OCI IAM 정책, 사용자, 태그 네임스페이스 등의 보안 관련 구성을 관리하는 역할을 담당합니다.Allow group InfoSec to manage tag-namespaces in tenancy Allow group InfoSec to manage policies in tenancy Allow group InfoSec to use users in tenancy Allow group InfoSec to manage groups in tenancy where all {target.group.name != ‘Administrators’, target.group.name != ‘InfoSec’}
-
OCI IAM 정책(Terraform Runner):
terraform-runner
그룹은 인프라 프로비저닝을 위해 Terraform 자동화 스크립트를 실행하는 데 전념합니다.Allow group terraform-runner to use tag-namespaces in tenancy Allow group terraform-runner to manage instance-family in compartment Tenants Allow group terraform-runner to manage virtual-network-family in compartment Tenants Allow group terraform-runner to manage volume-family in compartment Tenants Allow group terraform-runner to manage object-family in compartment Storage Allow group terraform-runner to manage secret-family in compartment Tenants Allow group terraform-runner to manage key-family in compartment Tenants
-
사용자 주체에 대한 OCI IAM 정책 스케일 조정
OCI IAM 정책 모델: 이 정책 모델의 목표는 속성 기반 액세스 제어(Attribute Based Access Control)라고도 알려진 데이터(당사의 경우 태그)로 통보되는 보다 적은 수의 관리 가능한 정책을 작성하는 것입니다. 액세스 제어를 위해 대상 리소스 또는 대상 리소스 컴파트먼트에 지정된 태그를 권한 태그라고 합니다.
권한 태그: 테넌시의 모든 동사(작업) + 리소스 유형 조합에 대한 권한 태그를 정의합니다. 대상 리소스에 대한 사용자 그룹에 지정해야 하는 고유한 권한을 정의합니다. 목록이 한 번 설정 및 완료되지 않았습니다. 적은 수의 권한 태그로 시작합니다. 정책 모델을 통해 핸들을 가져오면 권한 태그를 더 추가할 수 있습니다. 이 자습서에서는 권한 태그 네임스페이스를 mgmt
로 생성합니다. 또한 gname
이라는 하나의 태그 키를 사용하여 태그 네임스페이스(이 infosec
)를 만듭니다.
-
리소스 유형이 네 개인 다음 컴파트먼트 구조의 경우 해당 리소스에 대한 관리 및 사용 권한을 지정하기 위해 권한 태그가 생성됩니다.
-
대상에 지정해야 하는 모든 권한(대부분의 경우 구획)에 대해 그룹을 생성합니다. 컴파트먼트 기본 태그를 사용하여 리소스에 권한 태그를 지정하고 리소스 구획을 지정합니다. 태그 값은 대상 리소스에 대해 제공된 권한이 있어야 하는 그룹입니다.
-
권한 태그가 정의되면 정책을 작성할 수 있습니다. 최종 결과는 테넌시에 정의된 권한 태그당 하나의 정책만 필요하다는 것입니다. 제공된 권한에 대해 동일한 정책이 전체 테넌시에서 작동합니다.
-
더 많은 워크로드를 온보딩할 때 관리할 리소스 유형이 더 많은 경우 해당 권한 태그에 대한 권한 태그 및 정책을 추가해야 할 수 있습니다. 그렇지 않으면 액세스 권한을 가져야 하는 사용자 그룹을 사용하여 새 작업 부하에 기존 권한 태그를 지정합니다. 새 작업 로드에 대해 새 정책을 작성할 필요가 없습니다.
이 접근 방식은 여기에 설명된 모든 예에서 일관되게 유지되며 OCI IAM 그룹 및 정책을 정의하는 기반이 됩니다.
예 1: 모든 애플리케이션에 대한 컴파트먼트
1단계: 고객의 비즈니스에 대한 포괄적인 이해
CompanyA는 고객을 위해 여러 클라우드 네이티브 애플리케이션을 개발 및 배포하는 성장하는 기술 회사입니다. 각 애플리케이션은 엄격한 보안 및 규정 준수 요구 사항을 갖춘 특정 고객 세그먼트를 대상으로 합니다. 격리, 확장성 및 효율적인 액세스 제어를 보장하기 위해 CompanyA는 구조화된 구획화 접근 방식을 사용하여 OCI 리소스를 구성합니다.
단계 2: 작업 로드에 대한 컴파트먼트 구조 설계
설명된 대로 CompanyA는 OCI IAM 정책을 확장하기 위한 OCI IAM 정책 모델을 따릅니다. 리소스 격리를 유지 관리하기 위해 애플리케이션에 대해 별도의 구획을 만들었습니다.
주: 관리자만
mgmt
및infosec
태그 네임스페이스를 관리할 수 있어야 합니다.
3단계: Verb+Resource 조합 유형의 다음 권한 태그 설계
OCI에서 그룹을 생성합니다.
-
그룹 생성 권한이 있는 관리자 계정으로 OCI IAM 도메인에 로그인합니다.
-
ID 및 보안으로 이동하고 ID 아래의 도메인을 누릅니다.
-
구획을 선택하고 그룹을 생성할 도메인을 누릅니다.
-
그룹을 누릅니다.
-
권한 태그를 기반으로 그룹을 정의합니다. (선택사항) 사용자를 해당 그룹에 추가합니다.
주: 권한과 대상의 고유한 조합에 대해 그룹을 생성해야 합니다. 동일한 기능 그룹의 사용자(NetworkAdmin)가 모든 대상에서 네트워크를 관리할 수 있는 액세스 권한을 가져야 하는 경우 모든 대상에서 액세스를 관리하려면 하나의 그룹만 필요합니다.
다음은 해당 태그에 대한 권한 태그 및 OCI IAM 그룹입니다. 위의 단계에 따라 정의된 각 권한 태그에 대해 그룹을 만듭니다.
-
루트 컴파트먼트: 루트 컴파트먼트는 최상위 레벨 관리 계층으로 사용됩니다. 여기서 권한 태그가 지정된 관리자 그룹이 표시됩니다. 태그는 다음과 같습니다.
- 관리자: 전체 테넌시 관리를 위한
manageall
권한입니다. - UseAdministrators: 테넌시 전체에서 리소스에 액세스할 수 있는
useall
권한입니다. - 감사자: 테넌시 간 모니터링을 위해 리소스에 대한 읽기 전용 액세스 권한이 있는
readall
권한입니다.
- 관리자: 전체 테넌시 관리를 위한
-
애플리케이션별 구획 모델: CompanyA에는 여러 클라우드 기반 애플리케이션이 있습니다. 각 애플리케이션에 대해 별도의 상위 컴파트먼트를 생성합니다. 이 모델이 애플리케이션 1(App1) 및 애플리케이션 2(App2)에 상위 구획으로 적용되는 방법에 대해 살펴보겠습니다.
-
애플리케이션 1(App1): OCI에서 호스팅되는 고객 대면 애플리케이션입니다.
- 네트워크 컴파트먼트: VCN, 서브넷 등의 모든 네트워크 관련 리소스에 대한 컴파트먼트입니다. 이제 권한 태그 및 해당 OCI IAM 그룹을 생성할 수 있습니다.
- App1NetworkAdmin: App1에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
managenetwork
리소스 권한 태그입니다. - App1NetworkUser: App1의 네트워크 구성에 대한 제한된 액세스가 필요한 개발자를 위한
usenetwork
리소스 권한 태그입니다. - App1NetworkReader: App1의 네트워크 설정을 확인하는 감사자에 대한
readnetwork
리소스 권한 태그입니다.
- App1NetworkAdmin: App1에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
- 컴퓨트 컴파트먼트: 컴퓨트 인스턴스용 컴파트먼트입니다. 이제 권한 태그 및 해당 OCI IAM 그룹을 생성할 수 있습니다.
- App1ComputeAdmin: 시스템 관리자가 App1 백엔드에 대한 컴퓨트 인스턴스를 프로비전 및 스케일링하기 위한
managecompute
리소스 권한 태그입니다. - App1ComputeUser: App1의 백엔드 서비스를 배치 및 테스트하는 개발자를 위한
usecompute
리소스 권한 태그입니다. - App1ComputeReader: App1에 대한 컴퓨트 리소스 사용을 모니터링하는 감사자에 대한
readcompute
리소스 권한 태그입니다.
- App1ComputeAdmin: 시스템 관리자가 App1 백엔드에 대한 컴퓨트 인스턴스를 프로비전 및 스케일링하기 위한
- 데이터 컴파트먼트: 데이터베이스 및 스토리지 관련 리소스에 대한 컴파트먼트입니다. 이제 권한 태그 및 해당 OCI IAM 그룹을 생성할 수 있습니다.
- App1DataAdmin:
managedb
App1용 Oracle Autonomous Databases 및 OCI Object Storage를 관리하는 데이터베이스 관리자를 위한 리소스 권한 태그입니다. - App1DataUser:
usedb
App1와 관련하여 분석을 위해 데이터 세트에 액세스하는 데이터 과학자에 대한 리소스 권한 태그입니다. - App1DataReader: App1의 데이터베이스 구성을 검토하는 감사자에 대한
readdb
리소스 권한 태그입니다.
- App1DataAdmin:
- 네트워크 컴파트먼트: VCN, 서브넷 등의 모든 네트워크 관련 리소스에 대한 컴파트먼트입니다. 이제 권한 태그 및 해당 OCI IAM 그룹을 생성할 수 있습니다.
-
애플리케이션 2(App2): CompanyA의 운영을 위한 내부 ERP(전사적 자원 관리) 시스템입니다.
참고: 여기에서도 동일한 컴파트먼트 구조 접근 방식을 따르고 상위 App2 컴파트먼트 아래에 네트워크 컴파트먼트, 컴퓨트 컴파트먼트 및 데이터 컴파트먼트를 생성합니다. 중복을 방지하기 위해 App2에 대한 권한 태그 및 OCI IAM 그룹을 기록해 둡니다.
-
네트워크 컴파트먼트:
- App2NetworkAdmin:
managenetwork
리소스 권한 태그입니다. - App2NetworkUser:
usenetwork
리소스 권한 태그입니다. - App2NetworkReader:
readnetwork
리소스 권한 태그입니다.
- App2NetworkAdmin:
-
컴퓨트 컴파트먼트:
- App2ComputeAdmin:
managecompute
리소스 권한 태그입니다. - App2ComputeUser:
usecompute
리소스 권한 태그입니다. - App2ComputeReader:
readcompute
리소스 권한 태그입니다.
- App2ComputeAdmin:
-
데이터 컴파트먼트:
- App2DataAdmin:
managedb
리소스 권한 태그입니다. - App2DataUser:
usedb
리소스 권한 태그입니다. - App2DataReader:
readdb
리소스 권한 태그입니다.
- App2DataAdmin:
-
-
주: 대상에 권한 태그(대상은 리소스 또는 컴파트먼트일 수 있음)를 적용하여 App1 및 App2의 대상에 대해 특정 권한을 가질 그룹을 지정합니다.
4단계: 해당 권한 태그에 대한 OCI IAM 정책 작성
여기에 설명된 것과 동일한 접근 방식을 사용하여 CompanyA에 대한 정책을 생성할 것입니다. 더 적은 비용으로 그룹에 대한 OCI IAM 정책 확장. 이를 위해 gname
이라는 하나의 태그 키로 태그 네임스페이스(이 infosec
)를 만듭니다.
-
정책 생성 권한이 있는 관리자 계정으로 OCI IAM 도메인에 로그인합니다.
-
ID 및 보안으로 이동하고 ID 아래의 정책을 누릅니다.
-
루트 컴파트먼트를 선택하고 정책 생성을 누릅니다.
-
이름, 설명을 정책에 입력하고 정책 문도 추가합니다. Create를 누릅니다.
-
모든 리소스 정책:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
주: 다음 언급된 정책을 모두 정의하고 해당 정책 문을 추가하려면 동일한 절차를 따르십시오.
-
Cloudguard 정책:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
네트워크 정책:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
컴퓨트 정책:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcompute)
-
데이터베이스 정책:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
예 2: 모든 고객/테넌트의 컴파트먼트
1단계: 고객의 비즈니스에 대한 포괄적인 이해
CompanyB Solutions는 클라우드 인프라, 데이터 관리 및 애널리틱스에서 테넌트 기반의 SaaS 애플리케이션을 제공하는 선도적인 ISV(Independent Software Vendor)입니다. CompanyB 다양한 업계의 고객을 대상으로 원활하고 안전하며 확장 가능한 솔루션을 제공합니다. 그들의 성공은 보안 및 규정 준수 요구 사항을 준수하면서 리소스를 효율적으로 관리하기 위해 잘 설계된 구획 구조와 함께 OCI를 사용하는 데 달려 있습니다.
단계 2: 작업 로드에 대한 컴파트먼트 구조 설계
CompanyB 고객의 워크로드를 격리하고 전용 하위 구획을 생성했습니다. 또한 네트워크 구획, 공유 스토리지 및 데이터베이스 구획이 있습니다. CompanyB도 OCI IAM 정책 확장을 위해 OCI IAM 정책 모델을 따릅니다.
3단계: Verb+Resource 조합 유형의 다음 권한 태그 설계
그룹을 만들려면 예 1 단계 3을 참조하십시오. 아래에 정의된 모든 권한 태그에 대해 그룹을 만들어야 합니다.
-
루트 구획 - 중앙 집중식 거버넌스: 루트 구성요소는 OCI 테넌시 전반의 모든 리소스 및 활동을 감독하기 위한 중앙 계층 역할을 합니다. 여기서 권한 태그가 지정된 관리자 그룹이 표시됩니다. 태그는 다음과 같습니다.
- 관리자: 전체 테넌시 관리를 위한
manageall
권한입니다. - UseAdministrators: 테넌시 전체에서 리소스에 액세스할 수 있는
useall
권한입니다. - 감사자: 테넌시 간 모니터링을 위해 리소스에 대한 읽기 전용 액세스 권한이 있는
readall
권한입니다.
- 관리자: 전체 테넌시 관리를 위한
-
네트워크 컴파트먼트 - 운영 백본: 네트워크 컴파트먼트는 CompanyB의 클라우드 네트워킹 인프라를 지원하여 모든 리소스에 대한 연결을 지원합니다. 여기에는 VCN(가상 클라우드 네트워크), 서브넷, 게이트웨이 및 로드 밸런서가 포함됩니다. 권한 태그 및 해당 OCI IAM 그룹을 정의해 보겠습니다.
- NetworkAdmin: CompanyB에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
managenetwork
리소스 권한 태그입니다. - NetworkUser: CompanyB의 네트워크 구성에 대한 제한된 액세스가 필요한 개발자를 위한 리소스 권한 태그는
usenetwork
입니다. - NetworkReader: CompanyB의 네트워크 설정을 확인하는 감사자에 대한
readnetwork
리소스 권한 태그입니다.
- NetworkAdmin: CompanyB에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
-
테넌트 구획 - 다양한 고객 워크로드를 위한 격리된 구획: 테넌트 구획은 각 클라이언트(테넌트)에 대한 리소스와 워크로드를 격리하기 위해 구성됩니다. 이를 통해 CompanyB는 운영 효율성을 유지하면서 안전한 개인 서비스를 제공합니다.
-
테넌트 1 컴파트먼트: 테넌트 1은 애플리케이션 개발 및 로깅 서비스에 CompanyB를 사용하는 주요 엔터프라이즈 클라이언트를 나타냅니다. 다음은 권한 태그 및 해당 OCI IAM 그룹입니다.
t1devadmin
: 테넌트 1의 개발 팀에 대한manageappdev
리소스 권한은 사용자 정의 응용 프로그램을 구성, 배치할 수 있는 관리 권한을 가집니다.t1devuser
: 응용 프로그램 리소스를 모니터 및 조정할 수 있는useappdev
리소스 권한입니다. 테넌트 1의 개발자는 이러한 리소스를 일상적인 개발 및 테스트에 사용합니다.t1logsadmin
및t1devuser
: 역할 로깅 및 모니터링을 위한managelogs
및uselogs
리소스 권한은 administrators가 로깅 서비스를 구성하고 developers가 로그에 액세스하여 응용 프로그램을 디버그하고 최적화하도록 합니다.t1devadmin
및t1devuser
: 테넌트 1에 대한managecspm
및usecspm
리소스 권한도 보안 상태에 중점을 두고 있으며 보안 위험을 모니터링하고 해결할 수 있습니다.
-
Tenant 2 and Tenant 3 Compartments: The structure for Tenant 2 and Tenant 3 mirrors that of Tenant 1, with roles like
t2devadmin
,t2devuser
,t3devadmin
,t3devuser
,t2logsadmin
andt3logsadmin
ensuring that each tenant operates in a fully isolated environment. 이 접근 방식을 통해 CompanyB는 특정 테넌트 요구 사항을 충족하면서 일관된 거버넌스를 유지할 수 있습니다. -
공유 컴파트먼트 - 모든 테넌트를 위한 중앙 집중식 리소스: 공유 컴파트먼트에는 여러 테넌트가 사용하지만 개인 정보 보호 및 보안을 위해 논리적으로 분리된 상태로 유지되는 데이터베이스 및 오브젝트 스토리지와 같은 리소스가 포함됩니다.
- 데이터베이스 컴파트먼트:
dbadmin
: CompanyB의 데이터베이스 관리자에 대한managedb
리소스 권한은 프로비저닝(provisioning), 확장(scaling), 패치 적용을 포함하여 모든 테넌트가 사용하는 공유 데이터베이스를 처리합니다.dbuser
: 테넌트별 사용자에 대한usedb
리소스 권한은 해당 데이터베이스 스키마 또는 서비스에 액세스합니다.dbreader
: 데이터베이스 구성이 보안 정책을 준수하는지 확인하기 위해 감사자에 대한readdb
리소스 권한은 읽기 전용 액세스 권한을 가집니다.
- 스토리지 구획: OCI Object Storage는 각 테넌트에 대한 전용 버킷을 사용하여 중앙에서 관리됩니다.
osadmin
: 공유 객체 저장소 리소스 관리를 담당하는manageobject
리소스 권한입니다.osuser
:useobject
테넌트별 저장소 리소스 권한(또는t1osur
,t2osur
,t3osur
)은 테넌트가 해당 버킷에만 액세스하도록 합니다.osreader
: 규정 준수 팀에 대한 리소스 권한은 스토리지 구성 및 사용 패턴을 검토합니다.readobject
- 데이터베이스 컴파트먼트:
-
4단계: 해당 권한 태그에 대한 OCI IAM 정책 작성
정책을 만들려면 예 1 단계 4를 참조하십시오. 다음 정책을 생성해야 합니다.
-
모든 리소스 정책:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
Cloudguard 정책:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
네트워크 정책:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
로그 정책:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Appdev 정책:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageappdev) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useappdev) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readappdev)
-
DB 정책:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
스토리지 정책:
Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject) Allow any-user to read object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readobject)
예제 3: 대형 엔터프라이즈 컴파트먼트 구조
1단계: 고객의 비즈니스에 대한 포괄적인 이해
CompanyC 혁신적인 소프트웨어 솔루션을 전문으로 하는 다국적 기업인 Solutions는 미션 크리티컬 워크로드를 OCI로 마이그레이션하기로 결정했습니다. 이 회사는 보안, 규정 준수 및 확장성이 가장 중요한 재무 및 의료와 같은 규제가 엄격한 산업에서 운영하고 있습니다.
단계 2: 작업 로드에 대한 컴파트먼트 구조 설계
이제 OCI IAM 정책 확장을 위해 OCI IAM 정책 모델을 따르는 CompanyC의 컴파트먼트 구조를 살펴보겠습니다.
3단계: Verb+Resource 조합 유형의 다음 권한 태그 설계
그룹을 만들려면 예 1 단계 3을 참조하십시오. 다음 모든 권한 태그에 대해 그룹을 만들어야 합니다.
-
루트 구획 - 중앙 집중식 거버넌스: 루트 구성요소는 OCI 테넌시 전반의 모든 리소스 및 활동을 감독하기 위한 중앙 계층 역할을 합니다. 여기서 권한 태그가 지정된 관리자 그룹이 표시됩니다. 태그는 다음과 같습니다.
- 관리자: 전체 테넌시 관리를 위한
manageall
권한입니다. - UseAdministrators: 테넌시 전체에서 리소스에 액세스할 수 있는
useall
권한입니다. - 감사자: 테넌시 간 모니터링을 위해 리소스에 대한 읽기 전용 액세스 권한이 있는
readall
권한입니다.
- 관리자: 전체 테넌시 관리를 위한
-
PROD 구획: 비즈니스 운영 및 최종 사용자에게 직접 영향을 미치는 미션 크리티컬 운영 워크로드를 호스팅하기 위한 구획입니다. 각 애플리케이션에는 리소스 격리 및 최적화된 관리를 위한 전용 하위 구획이 있습니다. 권한 태그 및 해당 OCI IAM 그룹을 정의해 보겠습니다.
- NetworkAdmin: CompanyC에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
managenetwork
리소스 권한 태그입니다. - NetworkReader: CompanyC의 네트워크 설정을 확인하는 감사자에 대한
readnetwork
리소스 권한 태그입니다. - ComputeAdmin: 시스템 관리자가 CompanyC에 대한 컴퓨트 인스턴스를 프로비전 및 스케일링하기 위한
managecompute
리소스 권한 태그입니다. - ComputeReader: CompanyC에 대한 컴퓨트 리소스 사용을 모니터링하는 감사자에 대한
readcompute
리소스 권한 태그입니다. - StorageReader: 스토리지 관리 팀이 스토리지 구성을 관리할 수 있는 리소스 권한은
manageobject
입니다. - StorageReader: 규정 준수 팀에 대한 리소스 권한은 스토리지 구성 및 사용 패턴을 검토합니다.
readobject
- SecurityAdmin: 보안 위험을 모니터링하고 해결할 수 있는 기능과 함께 컴파트먼트 PROD에 대한
managecspm
리소스 권한도 보안 상태에 중점을 둡니다.
이제 애플리케이션별 하위 구획에 대한 권한 태그 및 해당 OCI IAM 그룹을 정의합니다. 현재 세 개의 서로 다른 애플리케이션 구획에 대한 권한을 병합하고 정의했습니다.
- 애플리케이션 구획:
- PRApp1NetAdmin, PRApp2NetAdmin 및 PRApp3NetAdmin: 각각 App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
managenetwork
리소스 권한 태그가 있는 관리 OCI IAM 그룹. - PRApp1NetUser, PRApp2NetUser 및 PRApp3NetUser: App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위해 각각
usenetwork
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹 - PRApp1ComputeAdmin, PRApp2ComputeAdmin 및 PRApp3ComputeAdmin: App1, App2 및 App3에 대한 OCI 컴퓨트 인스턴스를 관리하는 엔지니어를 위해 각각
managecompute
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - PRApp1ComputeUser, PRApp2ComputeUser 및 PRApp3ComputeUser: App1, App2 및 App3용 OCI 컴퓨트 인스턴스를 사용하는 엔지니어를 위해 각각
usecompute
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - PRApp1StorageAdmin, PRApp2StorageAdmin 및 PRApp3StorageAdmin: App1, App2 및 App3에 대한 OCI Object Storage를 관리하는 엔지니어를 위해 각각
manageobject
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - PRApp1StorageUser, PRApp2StorageUser 및 PRApp3StorageUser: OCI Object Storage를 App1, App2 및 App3용으로 사용하는 엔지니어를 위해 각각
useobject
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹.
- PRApp1NetAdmin, PRApp2NetAdmin 및 PRApp3NetAdmin: 각각 App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
- NetworkAdmin: CompanyC에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
-
NPROD 컴파트먼트: 스테이지, 개발 및 품질 보증 환경 전용입니다. 이 구획은 일관성을 보장하기 위해 PROD와 유사하게 구조화됩니다. 권한 태그 및 해당 OCI IAM 그룹을 정의해 보겠습니다.
- NetworkAdmin: CompanyC에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
managenetwork
리소스 권한 태그입니다. - NetworkReader: CompanyC의 네트워크 설정을 확인하는 감사자에 대한
readnetwork
리소스 권한 태그입니다. - ComputeAdmin:
managecompute
CompanyC용 OCI 컴퓨트 인스턴스를 프로비전하고 스케일링하기 위한 리소스 권한 태그입니다. - ComputeReader:
readcompute
CompanyC에 대한 OCI 컴퓨트 리소스 사용을 모니터링하는 감사자에 대한 리소스 권한 태그입니다. - StorageReader: 스토리지 관리 팀이 스토리지 구성을 관리할 수 있는 리소스 권한은
manageobject
입니다. - StorageReader: 규정 준수 팀에 대한 리소스 권한은 스토리지 구성 및 사용 패턴을 검토합니다.
readStorage
- SecurityAdmin: 보안 위험을 모니터링하고 해결할 수 있는 기능과 함께 Compartment NPROD에 대한
managecspm
리소스 권한도 보안 상태에 중점을 두고 있습니다.
마찬가지로 이제 애플리케이션별 하위 구획에 대한 권한 태그 및 해당 OCI IAM 그룹을 정의합니다.
- 애플리케이션 구획:
- NPApp1NetAdmin, NPApp2NetAdmin 및 NPApp3NetAdmin: App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위해 각각
managenetwork
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹 - NPApp1NetUser, NPApp2NetUser 및 NPApp3NetUser: App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위해 각각
usenetwork
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹 - NPApp1ComputeAdmin, NPApp2ComputeAdmin 및 NPApp3ComputeAdmin: App1, App2 및 App3에 대한 OCI 컴퓨트 인스턴스를 관리하는 엔지니어를 위해 각각
managecompute
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - NPApp1ComputeUser, NPApp2ComputeUser 및 NPApp3ComputeUser: App1, App2 및 App3용 OCI 컴퓨트 인스턴스를 사용하는 엔지니어를 위해 각각
usecompute
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - NPApp1StorageAdmin, NPApp2StorageAdmin 및 NPApp3StorageAdmin: App1, App2 및 App3에 대한 OCI Object Storage를 관리하는 엔지니어를 위해 각각
manageobject
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹. - NPApp1StorageUser, NPApp2StorageUser 및 NPApp3StorageUser: OCI Object Storage를 App1, App2 및 App3용으로 사용하는 엔지니어를 위해 각각
useobject
리소스 권한 태그를 사용하는 관리 OCI IAM 그룹.
- NPApp1NetAdmin, NPApp2NetAdmin 및 NPApp3NetAdmin: App1, App2 및 App3에 대한 네트워크 리소스를 관리하는 엔지니어를 위해 각각
- NetworkAdmin: CompanyC에 대한 네트워크 리소스를 관리하는 엔지니어를 위한
-
공유 컴파트먼트: 공유 컴파트먼트는 로깅 및 Cloud Guard OCI 서비스와 같은 모니터링을 위한 리소스를 호스트합니다. 또한 여러 테넌트에서 활용하는 암호화 및 암호 해독을 위한 키가 있으며, 개인 정보 보호 및 보안을 유지하기 위해 논리적 분리를 보장합니다. 해당 서비스에 대한 액세스 권한이 필요한 애플리케이션의 모든 관리자가 해당 서비스에 대해 생성된 OCI IAM 그룹에 추가됩니다. 권한 태그 및 해당 OCI IAM 그룹을 정의해 보겠습니다.
-
Oracle Cloud Guard 구획:
cspmAdmin
: PROD 및 비PROD 구획용 Oracle Cloud Guard를 관리하는 관리자에 대한 관리 OCI IAM 그룹(managecspm
리소스 권한 태그 포함)입니다.cspmUser
: PROD 및 비PROD 구획용 Oracle Cloud Guard를 사용/모니터링하는 엔지니어를 위한usecspm
리소스 권한 태그가 있는 OCI IAM 그룹.cspmReader
: PROD 및 비PROD 구획용 Oracle Cloud Guard를 읽는 엔지니어를 위한readcspm
리소스 권한 태그가 있는 OCI IAM 그룹
-
OCI 로깅 구획:
logsAdmin
: PROD 및 비PROD 구획에 대한 OCI 로깅을 관리하는 관리자에 대한managelogs
리소스 권한 태그가 있는 관리 OCI IAM 그룹logsUser
: OCI IAM은 PROD 및 비PROD 구획에 대한 OCI 로깅을 사용/모니터링하는 엔지니어를 위한uselogs
리소스 권한 태그와 함께 그룹화됩니다.logsReader
: OCI IAM은 PROD 및 비PROD 구획에 대한 OCI 로깅을 읽는 엔지니어를 위한readlogs
리소스 권한 태그와 함께 그룹화됩니다.
-
키 구획:
kmsAdmin
: PROD 및 비PROD 구획의 키 볼트를 관리하는 관리자에 대한 관리 OCI IAM 그룹(managekeys
리소스 권한 태그 포함)입니다.kmsUser
: PROD 및 비PROD 구획에 대해 키 볼트를 사용/모니터링하는 엔지니어를 위한usekeys
리소스 권한 태그가 있는 OCI IAM 그룹kmsReader
: OCI IAM은 PROD 및 비PROD 구획의 키 볼트를 읽는 엔지니어를 위한readkeys
리소스 권한 태그와 함께 그룹화됩니다.
-
-
플레이그라운드 구획: 실험, 개발 및 테스트를 위한 유연하고 격리된 환경입니다. 이 구획은 운영 또는 규정 준수 제약 조건과 관련이 없으므로 혁신에 이상적입니다. 여기서는 매우 하위 구획에 대해 하나의 OCI IAM 관리자 그룹만 가지며 테스트 요구사항에 필요한 모든 OCI 리소스에 대해 관리 권한을 부여합니다.
-
개발 구획:
DevAdmin
: Dev Compartment 내의 새로운 구현을 테스트하기 위한 개발 관리자를 위한managenetwork
,managecompute
,manageobject
,managekeys
,managelogs
리소스 권한을 가진 관리 OCI IAM 그룹
-
구획 테스트:
TestAdmin
: 테스트 컴파트먼트 내에서 새로운 구현을 테스트하기 위한 개발 관리자에 대한 관리 OCI IAM 그룹(managenetwork
,managecompute
,manageobject
,managekeys
,managelogs
리소스 권한)입니다.
-
성능 테스트 구획:
PerfTestAdmin
: 성능 테스트 컴파트먼트 내에서 새 구현을 테스트하기 위한 개발 관리자에 대한 관리 OCI IAM 그룹(managenetwork
,managecompute
,manageobject
,managekeys
,managelogs
리소스 권한)입니다.
-
4단계: 해당 권한 태그에 대한 OCI IAM 정책 작성
정책을 만들려면 예 1 단계 4를 참조하십시오. 다음 정책을 생성해야 합니다.
-
모든 리소스 정책:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
로그 정책:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Cloudguard 정책:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
키 정책
Allow any-user to manage keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managekeys) Allow any-user to use keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usekeys) Allow any-user to read keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readkeys)
-
애플리케이션 정책:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject)
-
플레이그라운드 정책:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to manage vaults in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageVaults Allow any-user to manage keys in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageKeys
주: 새 작업 로드를 온보딩할 때마다 해당 시나리오의 경우:
- 추가 권한 태그가 필요한지 확인합니다. 그런 다음 해당 권한 태그에 대한 OCI IAM 정책과 함께 생성합니다.
- 새 작업 로드 컴파트먼트에 대한 액세스를 관리할 그룹을 생성합니다.
- 권한 태그 및 생성된 그룹을 사용하여 작업로드 컴파트먼트에 태그를 지정합니다.
세분화된 액세스 제어를 위한 태그 기반 권한 모델
지금까지 리소스 제품군에 대한 create manage, user 또는 read 권한에 대해 설명한 모든 예제입니다. 그러나 대부분의 고객은 최소 권한 모델을 따르기 위해 세부적인 액세스 제어가 필요합니다. 이 자습서는 정책 모델을 이해하는 데 중점을 두므로 간단한 사용 사례에 대해 설명했습니다. 그러나 네 명의 네트워크 담당자의 예와 해당 네 명의 페르소나에 대한 세분화된 권한 태그 및 OCI IAM 정책을 설계하는 방법을 살펴보겠습니다.
-
NetworkOwner: 이 사람 또는 팀은 OCI 테넌시에 대한 네트워크 구현을 소유합니다. 모든 응용 프로그램에 대해 네트워크를 관리할 수 있는 권한과 FastConnect를 설정할 수 있는 액세스 권한이 있습니다.
-
NetworkAdmin: 이 팀은 애플리케이션 팀에 대한 네트워크 구현을 담당합니다. 애플리케이션 팀에 대한 VCN을 생성할 수 있습니다. 그러나 네트워크 방화벽 또는 FastConnect를 설정할 수 있는 액세스 권한이 없습니다.
-
NetworkOperator: 이 팀은 애플리케이션의 네트워크를 소유합니다. 팀은 애플리케이션 VCN 또는 공유 VCN에서 애플리케이션 서브넷을 생성할 수 있습니다. 그러나 VCN을 관리하거나 업데이트할 권한이 없습니다.
-
NetworkUser: 응용 프로그램 네트워크 리소스에 대한 사용 권한이 필요한 응용 프로그램 관리 팀입니다.
네트워크 구획에서 networkowner
, networkadmin
, networkoperator
및 networkuser
를 네 개의 태그로 정의합니다. 해당 태그의 경우 네트워크 컴파트먼트에 액세스할 수 있는 그룹 이름을 지정합니다.
-
NetworkOwner 정책:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkowner)
-
NetworkAdmin 정책:
Allow any-user to manage vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage local-peering-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage service-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage internet-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin)
-
NetworkOperator 정책:
Allow any-user to {VCN_ATTACH,VCN_DETACH} in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator)
-
NetworkUser 정책:
Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use vnics in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser)
인스턴스 Principals에 대한 OCI IAM 정책 스케일 조정
예 1: OCI의 공유 스토리지 및 암호에 대한 다중 테넌트 인스턴스 액세스 제어
1단계: 고객의 비즈니스에 대한 포괄적인 이해
XYZ Cloud Solutions는 OCI에서 호스팅되는 DMS(문서 관리 시스템)를 제공하는 SaaS 제공업체입니다. 이 플랫폼은 여러 기업 고객에게 서비스를 제공하며, 각 고객은 공유 인프라를 활용하면서 데이터를 엄격하게 격리해야 합니다.
고객 요구 사항:
- 각 엔터프라이즈(테넌트)에는 문서를 처리하고 관리할 수 있는 격리된 인스턴스가 있어야 합니다.
- 각 테넌트의 암호(API 키, 데이터베이스 인증서)는 해당 테넌트의 인스턴스에만 액세스할 수 있어야 합니다.
- 모든 테넌트는 문서를 중앙 집중식 OCI Object Storage 구획에 저장하지만 자체 버킷에만 액세스해야 합니다.
- 시스템은 새로운 테넌트의 자동 확장 및 손쉬운 온보딩을 지원해야 합니다.
단계 2: 작업 로드에 대한 컴파트먼트 구조 설계
이제 OCI IAM 정책 확장을 위해 OCI IAM 정책 모델을 따르는 XYZ Cloud Solutions의 구획 구조를 살펴 보겠습니다.
-
구획을 사용한 테넌트 격리:
- 각 엔터프라이즈 고객(Tenant1, Tenant2 등)에 대한 전용 OCI 구획을 생성합니다.
- 각 구획 내에 컴퓨트 인스턴스(VM, 함수 또는 컨테이너)를 배포합니다.
- 액세스 제어가 가능한 중앙 집중식 스토리지
-
OCI 오브젝트 스토리지 버킷에 대한 공유 스토리지 컴파트먼트 유지 관리:
- 각 테넌트는
Enterprise.Tenant=<TenantName>
태그가 지정된 전용 버킷을 가져옵니다. - OCI IAM 정책은 각 테넌트의 인스턴스가 자신의 버킷에서만 읽을 수 있도록 보장합니다.
- OCI Vault를 통한 암호 관리
- 각 테넌트는
-
OCI 저장소에 데이터베이스 인증서, API 키 및 암호화 키 저장:
- 각 테넌트의 암호에는
Enterprise.Tenant=<TenantName>
태그가 지정됩니다. - OCI IAM 정책은 테넌트의 인스턴스만 해당 암호를 검색할 수 있도록 허용합니다.
- 거버넌스에 대한 엔터프라이즈 태깅 전략입니다.
- 각 테넌트의 암호에는
-
테넌트 소유권을 추적하려면
Enterprise.Tenant
를 사용하여 엔터프라이즈 태그 네임스페이스를 정의합니다.- 컴파트먼트 기본 태그를 적용하여 각 테넌트의 컴파트먼트 내에 있는 리소스에 자동으로 태그를 지정합니다.
- 자동화된 액세스 제어를 위해 태그 기반 정책을 사용합니다.
단계 3: OCI IAM 그룹 생성
OCI 다중 테넌트 환경에서 안전하고 격리된 액세스 관리를 보장하기 위해 다음 정책이 정의됩니다.
-
InfoSec 그룹: 정책, 태그, 사용자 및 그룹을 관리할 수 있는 액세스 권한이 있는 보안 관리자입니다.
-
Terraform-Runner Group: OCI 리소스 관리를 위한 코드형 인프라(IaC) 실행 그룹입니다.
참고: 이러한 그룹 및 OCI IAM 정책은 공통 OCI IAM 정책 섹션에서 설명한 대로 이미 생성되었습니다.
단계 4: 정의된 그룹에 대한 OCI IAM 정책 생성
테넌트 리소스 액세스 정책: 데이터 격리를 유지하려면 테넌트 리소스가 자신의 암호 및 객체 스토리지에만 액세스할 수 있어야 합니다.
Allow any-user to use object-family in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Allow any-user to use secret-family in compartment Tenants where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
테넌트 인스턴스 원칙에 새 객체를 생성할 수 있는 권한도 필요한 경우 테넌트 이름과 동일한 이름으로 버킷 이름을 생성하고 테넌트 이름 태그를 사용하여 버킷 이름과 비교할 수 있습니다.
Allow any-user to manage objects in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.bucket.name
예 2: 공유 OCI 스토리지 모델의 다중 서비스 데이터 액세스를 위한 세분화된 액세스 제어
1단계: 고객의 비즈니스에 대한 포괄적인 이해
XYZ Corp는 디지털 혁신 솔루션을 전문으로 하는 빠르게 성장하는 기업입니다. XYZ Corp는 글로벌 입지를 통해 여러 지역에서 운영되며 OCI를 활용하여 중요한 애플리케이션을 호스팅하고 데이터를 관리하며 팀 간 원활한 협업을 보장합니다.
고객 요구 사항:
- 특정 테넌트에 대한 관리 서비스의 모든 인스턴스는 공유 스토리지 컴파트먼트 내의 관리 버킷을 읽을 수 있습니다.
- 특정 테넌트에 대한 Sales Service의 모든 인스턴스는 공유 스토리지 컴파트먼트 내의 영업 버킷을 읽을 수 있습니다.
- 특정 테넌트에 대한 공급 서비스의 모든 인스턴스는 공유 스토리지 컴파트먼트 내의 공급 버킷을 읽을 수 있습니다.
- 특정 테넌트에 대한 모든 인스턴스는 공유 스토리지 컴파트먼트 내에서 Shared Services Buckets(Shared Services 버킷)를 읽을 수 있습니다.
- 특정 테넌트에 대한 모든 인스턴스는 테넌트 컴파트먼트 내의 해당 테넌트에 대한 암호를 읽을 수 있습니다.
단계 2: 작업 로드에 대한 컴파트먼트 구조 설계
이제 OCI IAM 정책 확장을 위해 OCI IAM 정책 모델을 따르는 XYZ Corp의 컴파트먼트 구조를 살펴보겠습니다.
-
테넌트별 컴파트먼트 생성:
- 각 테넌트에 대한 전용 컴파트먼트를 생성합니다.
- 테넌트에 속한 모든 리소스는 해당 테넌트의 컴파트먼트 내에 프로비전되어야 합니다.
-
엔터프라이즈 태그 지정 네임스페이스:
- 다음 태그 키를 사용하여 엔터프라이즈 태그 네임스페이스를 정의합니다.
Enterprise.Tenant
테넌트 이름을 캡처합니다.Enterprise.Service
서비스 유형을 캡처합니다. 관리, 판매, 공급 또는 공유를 예로 들 수 있습니다.
- 다음 태그 키를 사용하여 엔터프라이즈 태그 네임스페이스를 정의합니다.
-
테넌트 구획의 기본 태그:
- 각 테넌트 컴파트먼트에 대한 컴파트먼트 기본 태그를 구성하여 테넌트 이름을 캡처하여
Enterprise.Tenant
태그가 컴파트먼트 내의 모든 리소스에 자동으로 적용되도록 합니다.
- 각 테넌트 컴파트먼트에 대한 컴파트먼트 기본 태그를 구성하여 테넌트 이름을 캡처하여
-
리소스 레벨 태그 지정:
- 테넌트 구획 내의 모든 리소스는 서비스 유형을 지정하는
Enterprise.Service
로 태그를 지정해야 합니다. 예를 들어 관리, 판매, 공급 등이 있습니다.
- 테넌트 구획 내의 모든 리소스는 서비스 유형을 지정하는
-
대상 리소스 태그 지정(버킷 및 암호):
- 다음을 사용하여 모든 대상 리소스(예: 버킷 및 암호)에 태그를 지정합니다.
Enterprise.Tenant
테넌트 이름을 캡처합니다.Enterprise.Service
연관된 서비스 유형을 캡처합니다.
- 다음을 사용하여 모든 대상 리소스(예: 버킷 및 암호)에 태그를 지정합니다.
-
공유 버킷 태그 지정:
- 공유 버킷 리소스의 경우 교차 서비스 접근성을 나타내도록
Enterprise.Service = 'Shared'
를 설정합니다.
- 공유 버킷 리소스의 경우 교차 서비스 접근성을 나타내도록
단계 3: OCI IAM 그룹 생성
OCI 다중 테넌트 환경에서 안전하고 격리된 액세스 관리를 보장하기 위해 다음 정책이 정의됩니다.
-
InfoSec 그룹: 정책, 태그, 사용자 및 그룹을 관리할 수 있는 액세스 권한이 있는 보안 관리자입니다.
-
Terraform-Runner Group: OCI 리소스 관리를 위한 코드형 인프라(IaC) 실행 그룹입니다.
-
동적 그룹 AdminInstances: 일치 규칙
All {tag.Enterprise.Service.value=’Admin’}
사용. -
동적 그룹 SalesInstances: 일치 규칙
All {tag.Enterprise.Service.value=’Sales’}
사용. -
동적 그룹 SupplyInstances: 일치 규칙
All {tag.Enterprise.Service.value=’Supply’}
사용.
참고: 공통 OCI IAM 정책 섹션에서 설명한 대로 InfoSec 및 Terraform-Runner 그룹 및 IAM 정책이 이미 생성되었습니다.
단계 4: 정의된 그룹에 대한 OCI IAM 정책 생성
테넌트 리소스 액세스 정책: 데이터 격리를 유지하려면 테넌트 리소스가 자신의 암호 및 객체 스토리지에만 액세스할 수 있어야 합니다.
Allow dynamic-group AdminInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Allow any-user to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Shared’}
Allow dynamic-group AdminInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
관련 링크
확인
-
작가 - Chetan Soni(Senior Cloud Engineer)
-
제공자 - Kiran Thakkar(마스터 수석 클라우드 아키텍트)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Deep Dive into Tag based Oracle Cloud Infrastructure Identity and Access Management Policies
G30369-01
Copyright ©2025, Oracle and/or its affiliates.