조직 정책을 사용하면 조직의 리소스를 중앙에서 프로그래매틱 방식으로 제어할 수 있습니다. 조직 정책 관리자는 전체 조직에 걸쳐 정책을 구성할 수 있습니다.
이 버전의 Google Distributed Cloud (GDC) 오프라인에서는 조직 정책을 위한 UI나 CLI가 없습니다. API 또는 kubectl
CLI를 사용하여 관리해야 합니다.
이점
조직 정책을 구성하면 다음과 같은 여러 이점이 있습니다.
- 조직의 리소스 사용 방법에 대한 제한사항 구성을 중앙에서 제어합니다.
- 개발팀이 규정을 준수할 수 있도록 가드레일을 정의하고 설정합니다.
- 프로젝트 소유자와 해당 팀에서 규정을 위반하지 않고 신속하게 이동할 수 있도록 지원합니다.
Identity and Access Management와의 차이점
Identity and Access Management는 누구에 중점을 두며 이를 통해 관리자는 권한을 기반으로 특정 리소스에 조치를 취할 수 있는 사용자를 승인할 수 있습니다.
조직 정책은 무엇에 중점을 두며 이를 통해 관리자는 구성 방법을 결정하기 위해 특정 리소스에 대한 제한사항을 설정할 수 있습니다.
사용 가능한 조직 정책 유형 목록
이 GDC 출시에서는 다음 정책 유형을 사용할 수 있습니다.
GDCHRestrictedService
GDCHRestrictedService
정책 유형을 사용하면 GDC에서 사용할 수 있는 서비스를 제한할 수 있습니다. 적용되면 정책은 참조하는 API의 사용을 방지합니다. 예를 들어 이 정책 유형을 사용하여 특정 프로젝트로 지정된 서비스의 사용을 제한할 수 있습니다. 팀에서 새 GDC 서비스를 사용하도록 허용하기 전에 테스트를 실행하려는 경우 정책을 사용하여 새 GDC 서비스에 대한 액세스를 완전히 제한할 수도 있습니다.
서비스 리소스와 동일한 클러스터에서 이 정책을 만듭니다. 서로 다른 서비스 또는 서로 다른 프로젝트에 대해 이 정책의 인스턴스를 여러 개 만들 수 있습니다.
다음은 이 정책의 템플릿입니다.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: POLICY_NAME
spec:
match:
MATCH_SCHEMA
parameters:
disabledOperations:
- DISABLED_OPERATION
다음을 바꿉니다.
POLICY_NAME
: 조직 정책의 이름입니다.MATCH_SCHEMA
: 이 제약 조건에 대해 일치시킬 리소스입니다. 자세한 내용은 클러스터 내에서 조직 정책의 범위 정의 섹션을 참고하세요.DISABLED_OPERATION
: 이 정책에서 차단하는 작업 그룹입니다. 허용되는 값은CREATE
및UPDATE
입니다.disabledOperations
필드의 기본값은*
입니다.
GDCHRestrictedService
정책은 UPDATE
및 CREATE
작업만 지원합니다. GET
, LIST
, DELETE
작업을 제한하려면 IAM을 사용하여 역할을 할당하는 것이 좋습니다.
GDCHRestrictedService
정책은 GDC에서 사용할 수 있는 서비스 중 다음 하위 집합만 지원합니다.
서비스 | API 그룹 | kinds |
---|---|---|
Marketplace | marketplace.gdc.goog |
MarketplaceService
|
Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
데이터베이스 서비스 - Postgres | postgresql.dbadmin.gdc.goog |
|
데이터베이스 서비스 - Oracle | oracle.dbadmin.gdc.goog |
|
Transfer Appliance | system.gpc.gke.io |
TransferApplianceRequest |
백업 | backup.gdc.goog |
BackupRepositoryManager |
Spark용 Dataproc 컨테이너 (마켓 서비스) | sparkoperator.k8s.io |
SparkApplication |
특정 서비스의 종류를 모두 지정할 필요는 없습니다. 해당 종류만 지정하여 서비스 기능의 하위 집합 사용을 제한할 수 있습니다.
예를 들어 마켓 서비스 업데이트를 제한하려면 다음 정책을 만듭니다.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: no-update-to-marketplace-service
spec:
match:
kinds:
- apiGroups:
- "marketplace.gdc.goog"
kinds:
- MarketplaceService
parameters:
disabledOperations:
- "UPDATE"
이 정책은 종류 값이 MarketplaceService
인 marketplace.gdc.goog
API 그룹에 대한 UPDATE
작업을 방지합니다. 이 정책은 누구도 Marketplace 서비스를 수정할 수 없도록 합니다.
서비스를 완전히 사용 중지하려면 disabledOperations
매개변수에 CREATE
와 UPDATE
를 모두 나열하고 여기에 설명된 모든 종류를 나열합니다.
조직 정책을 관리할 IAM 역할 부여
각 조직 정책에는 연결된 IAM 역할이 있습니다. 특정 조직 정책을 관리하려는 사용자 및 그룹에 IAM 역할을 부여합니다. 사용자 또는 그룹이 GDCHRestrictedService
유형의 정책을 생성, 업데이트 또는 삭제할 수 있도록 하려면 사용자 또는 그룹에 gdchrestrictedservice-policy-manager
IAM 역할을 할당하세요.
클러스터 내에서 조직 정책의 범위 정의
조직 정책을 정의할 때 모든 네임스페이스에 영향을 미칠지, 특정 네임스페이스에만 영향을 미칠지, 지정된 목록을 제외한 모든 네임스페이스에 영향을 미칠지 결정합니다. 이를 위해 정책 정의의 .spec.match.excludedNamespaces
, .spec.match.namespaceSelector
, .spec.match.namespaces
, .spec.match.scope
매개변수를 조합하여 사용합니다.
이러한 매개변수에 대해 자세히 알아보려면 조직 정책 일치 섹션 페이지를 참고하세요. 예를 들어 owner: dba-team
라벨이 있는 네임스페이스에서만 데이터베이스를 만들 수 있도록 허용하려면 다음 정책을 만듭니다.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: db-restricted-to-dbas
spec:
match:
scope: Namespaced
namespaceSelector:
matchExpressions:
# We are restricting the use of the service in namespaces that
# don't have the owner: dba-team label
- key: owner
operator: NotIn
values:
- dba-team
kinds:
- apiGroups:
- "postgresql.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
- Restore
- apiGroups:
- "oracle.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
parameters:
disabledOperations:
- "UPDATE"
- "CREATE"
기존 정책 롤백
기존 정책의 시행을 중지하려면 kubectl
CLI를 사용하여 정책을 삭제하세요. 정책이 정의된 클러스터와 gdchrestrictedservice-policy-manager
IAM 역할에 액세스할 수 있는 kubeconfig 파일을 사용합니다.
조직 정책을 삭제하려면 다음을 실행합니다.
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
다음을 바꿉니다.
CLUSTER_KUBECONFIG
: 조직 정책이 있는 클러스터의 kubeconfig 파일입니다.POLICY_NAME
: 삭제할 조직 정책의 이름입니다.
감사 모드에서 정책 테스트
정책을 시행하지 않고 테스트할 수 있습니다. 정책을 출시하기 전에 정책이 기존 시스템을 중단하지 않는지 확인하거나 동작이 얼마나 광범위하게 퍼져 있는지 추정하려면 정책을 테스트하세요. 테스트를 추가하려면 정책 정의에 enforcementAction
을 추가하세요. 이 매개변수에 사용할 수 있는 값은 세 가지입니다.
deny
: 정책이 적용됩니다. 기본 설정입니다.dryrun
: 작업이 허용되지만 감사 로그와 정책 상태 모두에 정책 위반이 표시됩니다.kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME
을 사용하여 위반을 검사합니다.warn
: 정책 위반을 트리거한 요청에 대한 응답에 경고도 표시된다는 점을 제외하고dryrun
와 동일합니다.
예를 들어 마켓을 사용 중지하는 정책을 테스트하려면 다음 정책을 만듭니다.
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: disable-marketplace-service-project-alice
Spec:
enforcementAction: warn
match:
kinds:
- apiGroups: ["marketplace.gdc.goog"]
kinds: ["MarketplaceService"]