규정 준수 관리자에는 프레임워크에 추가하고 환경에 배포할 수 있는 여러 기본 제공 클라우드 제어가 포함되어 있습니다. 필요한 경우 자체 커스텀 클라우드 제어를 만들고 관리하며 기본 제공 클라우드 제어를 업데이트할 수 있습니다.
시작하기 전에
이 페이지의 남은 태스크를 수행하기 전에 먼저 다음 태스크를 수행하세요.
권한 설정
-
클라우드 제어 프레임워크를 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직 또는 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- 규정 준수 관리자 관리자 (
roles/cloudsecuritycompliance.admin) -
조직 정책을 기반으로 하는 클라우드 제어를 만들거나 수정하려면 다음 중 하나가 필요합니다.
- 조직 정책 관리자 (
roles/orgpolicy.policyAdmin) - Assured Workloads 관리자 (
roles/assuredworkloads.admin) - Assured Workloads 편집자 (
roles/assuredworkloads.editor)
- 조직 정책 관리자 (
-
프로젝트 정책을 기반으로 하는 클라우드 제어를 만들거나 수정하려면 프로젝트 IAM 관리자 (
roles/resourcemanager.projectIamAdmin) 역할이 필요합니다.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
- 규정 준수 관리자 관리자 (
Google Cloud CLI 설정
Google Cloud CLI를 설치한 후 제휴 ID로 gcloud CLI에 로그인합니다. 로그인한 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
gcloud init서비스 계정 가장 기능을 사용하여 사용자 인증 정보 대신 Google API에 인증하도록 gcloud CLI를 설정하려면 다음 명령어를 실행합니다.
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
자세한 내용은 서비스 계정 가장을 참고하세요.
클라우드 제어 보기
기본 제공 클라우드 컨트롤과 이미 만든 커스텀 클라우드 컨트롤을 보려면 다음 단계를 완료하세요.
콘솔
Google Cloud 콘솔에서 규정 준수 페이지로 이동합니다.
조직 또는 프로젝트를 선택합니다.
구성 탭에서 클라우드 제어를 클릭합니다. 사용 가능한 클라우드 제어가 표시됩니다.
대시보드에는 클라우드 제어가 포함된 프레임워크와 클라우드 제어가 적용되는 리소스(조직, 폴더, 프로젝트) 수에 대한 정보가 포함됩니다.
클라우드 제어에 대한 세부정보를 보려면 제어 이름을 클릭합니다.
CLI
특정 클라우드 제어에 대한 정보를 확인하거나 조직의 모든 클라우드 제어를 나열할 수 있습니다.
클라우드 제어에 대한 세부정보 보기
특정 클라우드 제어에 대한 세부정보를 보려면 gcloud
compliance-manager cloud-controls describe 명령어를 실행합니다.
gcloud compliance-manager cloud-controls describe CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION \
[--major-revision-id=MAJOR_REVISION_ID]
다음 값을 바꿉니다.
CLOUD_CONTROL: 클라우드 제어의 이름ORGANIZATION: 조직 ID입니다.LOCATION: 클라우드 제어가 저장되는 리전MAJOR_REVISION_ID는 확인하려는 클라우드 제어 버전을 지정하는 선택적인 플래그입니다. 플래그를 포함하지 않으면 최신 버전이 반환됩니다.
예를 들어 이름이 builtin-block-external-ip-addresses-for-vm-access이고 주 버전 번호가 1인 클라우드 제어를 보려면 다음을 실행합니다.
gcloud compliance-manager cloud-controls describe \
builtin-block-external-ip-addresses-for-vm-access \
--organization=3589215982 \
--location=global \
--major-revision-id=1
자세한 내용은 gcloud compliance-manager cloud-controls describe를 참조하세요.
클라우드 제어 목록 가져오기
조직의 클라우드 제어 목록을 가져오려면 gcloud
compliance-manager cloud-controls list 명령어를 실행합니다.
gcloud compliance-manager cloud-controls list \
--location=LOCATION \
--organization=ORGANIZATION
다음 값을 바꿉니다.
ORGANIZATION: 조직 ID입니다.LOCATION: 클라우드 제어가 저장되는 리전
예를 들어 3589215982 조직 내에 있고 전역 위치에 저장된 모든 클라우드 제어를 보려면 다음을 실행합니다.
gcloud compliance-manager cloud-controls list \
--organization=3589215982 \
--location=global
선택적 플래그에 대한 자세한 내용은 gcloud compliance-manager cloud-controls list를 참조하세요.
커스텀 클라우드 제어 만들기
커스텀 클라우드 제어를 만들 때 Cloud 애셋 인벤토리 리소스 유형에 규칙을 적용합니다.
콘솔
콘솔을 사용할 때는 하나의 Cloud 애셋 인벤토리 리소스 유형에 적용되는 하나의 규칙으로 커스텀 클라우드 제어를 만들 수 있습니다.
Google Cloud 콘솔에서 규정 준수 페이지로 이동합니다.
조직 또는 프로젝트를 선택합니다.
구성 탭에서 클라우드 제어를 클릭합니다. 사용 가능한 클라우드 제어 목록이 표시됩니다.
Gemini를 사용하거나 수동으로 클라우드 제어를 만듭니다.
Gemini 사용하기
Gemini에게 클라우드 제어를 생성해 달라고 요청하세요. 프롬프트를 기반으로 Gemini는 고유 식별자, 이름, 관련 감지 로직, 가능한 해결 단계를 제공합니다.
권장사항을 검토하고 필요한 사항을 변경합니다.
커스텀 클라우드 제어를 저장합니다.
수동으로 만들기
클라우드 제어 ID에 제어의 고유 식별자를 입력합니다.
조직의 사용자가 커스텀 클라우드 제어의 목적을 이해하는 데 도움이 되는 이름과 설명을 입력합니다.
선택사항: 제어의 카테고리를 선택합니다. 계속을 클릭합니다.
커스텀 클라우드 제어에 사용할 수 있는 리소스 유형을 선택합니다. 규정 준수 관리자는 모든 리소스 유형을 지원합니다. 리소스 이름을 찾으려면 애셋 유형을 참조하세요.
클라우드 제어에 대한 감지 로직을 Common Expression Language (CEL) 형식으로 제공합니다.
CEL 표현식을 사용하면 리소스의 속성을 평가하는 방법을 정의할 수 있습니다. 자세한 내용과 예시는 커스텀 클라우드 제어 규칙 작성을 참조하세요. 계속을 클릭합니다.
평가 규칙이 유효하지 않으면 오류가 표시됩니다.
적절한 발견 항목 심각도를 선택합니다.
조직의 이슈 대응자와 관리자가 클라우드 제어에 대한 모든 발견 항목을 해결할 수 있도록 해결 방법 안내를 작성합니다. 계속을 클릭합니다.
항목을 검토한 다음 만들기를 클릭합니다.
CLI
gcloud CLI를 사용하면 최대 3개의 규칙으로 커스텀 클라우드 제어를 만들 수 있습니다. 각 규칙은 하나의 리소스 유형에만 적용될 수 있습니다.
커스텀 클라우드 제어를 만들려면 gcloud compliance-manager
cloud-controls create 명령어를 실행합니다.
gcloud compliance-manager cloud-controls create CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION \
[--display-name=DISPLAY_NAME] \
[--description=DESCRIPTION] \
[--categories=[CATEGORIES,...]] \
[--finding-category=FINDING_CATEGORY] \
[--parameter-spec=[defaultValue=DEFAULTVALUE],[description=DESCRIPTION],[displayName=DISPLAYNAME],[isRequired=ISREQUIRED],[name=NAME],[substitutionRules=SUBSTITUTIONRULES],[validation=VALIDATION],[valueType=VALUETYPE]] \
[--remediation-steps=REMEDIATION_STEPS] \
[--rules=[celExpression=CELEXPRESSION],[description=DESCRIPTION],[ruleActionTypes=RULEACTIONTYPES]] \
[--severity=SEVERITY] \
[--supported-cloud-providers=[SUPPORTED_CLOUD_PROVIDERS,…]] \
[--supported-target-resource-types=[SUPPORTED_TARGET_RESOURCE_TYPES,…]]
다음 값을 바꿉니다.
CLOUD_CONTROL: 클라우드 제어의 고유한 영숫자 이름ORGANIZATION: 조직 ID입니다.LOCATION: 클라우드 제어가 저장되는 리전DISPLAY_NAME: 인간이 읽을 수 있는 클라우드 제어 이름DESCRIPTION: 클라우드 제어 목적에 대한 설명(선택사항)CATEGORIES,…: 클라우드 제어가 속한 카테고리를 정의하는 선택적 파라미터입니다. 허용되는 카테고리 목록은 gcloud compliance-manager cloud-controls create를 참조하세요.FINDING_CATEGORY: 클라우드 제어 생성 시 Security Command Center 발견 사항 대시보드에 표시되는 값입니다.--parameter-spec=[defaultValue=DEFAULTVALUE], \ [description=DESCRIPTION], \ [displayName= DISPLAYNAME], \ [isRequired=ISREQUIRED], \ [name=NAME], \ [substitutionRules=SUBSTITUTIONRULES], \ [validation=VALIDATION], \ [valueType=VALUETYPE]...]
클라우드 제어의 선택적 파라미터 정보이며 다음 형식입니다.
DEFAULTVALUE: 프레임워크를 배포할 때 사용자가 파라미터를 맞춤설정하지 않는 경우 적용되는 데이터입니다. 지원되는 값 유형은boolValue,numberValue,stringListValue,stringValue입니다.DESCRIPTION: 제어에 대한 설명(선택사항)ISREQUIRED: 컨트롤에 파라미터 설정이 필요한 경우trueNAME: 파라미터 이름SUBSTITUTIONRULES: 규정 준수 관리자가 파라미터의 커스텀 값을 삽입하는 방법과 위치입니다. proto 점 표기법을 사용하여 규칙 내에서 타겟팅된 경로를 지정합니다 (예:rules[0].org_policy_constraint...). 다음 옵션 중 하나를 선택합니다.attributeSubstitutionRule: 파라미터 값을 규칙의 구조적 필드에 직접 삽입하려는 경우 (예: 조직 정책 제약조건 규칙 템플릿 내에서 제한된 값 목록 채우기)placeholderSubstitutionRule: 규칙에서 텍스트 문자열 (또는 CEL 표현식)을 사용하는 경우 문자열에는$접두사가 붙은 자리표시자 변수(예:$deniedServices)가 포함되어야 하며 이 규칙은 컴파일러에 매개변수를 자리표시자에 매핑하도록 지시합니다.
다음 예시에서는
STRINGLIST유형의deniedServices이라는 목록 파라미터를 만듭니다. 배포 시attributeSubstitutionRule를 사용하여 사용자 제공 서비스 이름 (예:compute.googleapis.com)을 구조적 커스텀 조직 정책 규칙(denied_values)에 직접 추가합니다.--parameter-spec='name=deniedServices,isRequired=true,valueType=STRINGLIST,substitutionRules=[{attributeSubstitutionRule={attribute="rules[0].org_policy_constraint.policy_rules[0].values.denied_values"}}]'VALIDATION는 허용되는 값 집합입니다. 다음 옵션 중 하나를 선택합니다.allowedValues를 사용하여 정적 허용 목록을 적용합니다. 예를 들어 위치 매개변수를 특정 문자열 필드로 제한합니다.validation={allowedValues={values=[{stringValue=us-central1},{stringValue=us-west1}]}}intRange를 사용하여 정수에 숫자 경계를 적용합니다. 예를 들어 보관 기간을 1에서 365 사이로 설정합니다.validation={intRange={min=1,max=365}}regexpPattern를 사용하여 문자열 텍스트에 정규 표현식 일치를 적용합니다. 예를 들어 엄격한 영숫자 이름 지정이 필요합니다.validation={regexpPattern={pattern="^[a-z][-a-z0-9]*$"}}
VALUETYPE: 사용자가 이 매개변수에 제공하는 값의 데이터 유형 또는 형식입니다. 지원되는 값 유형은STRING,BOOLEAN,STRINGLIST,NUMBER,ONEOF입니다.
또는 매개변수를 정의하는 JSON 또는 YAML 파일을 지정할 수 있습니다. 예를 들면
--parameter-spec=path_to_file.(yaml|json)입니다. 다음 섹션을 펼쳐 JSON 및 YAML 파일 예시를 확인하세요.JSON 파일 예시
[ { "name": "deniedServices", "displayName": "Services Requiring CMEK", "description": "List of service names that must use Customer-Managed Encryption Keys.", "isRequired": true, "valueType": "STRINGLIST", "substitutionRules": [ { "attributeSubstitutionRule": { "attribute": "rules[0].org_policy_constraint.policy_rules[0].values.denied_values" } } ] } ]YAML 파일 예시
- name: deniedServices displayName: "Services Requiring CMEK" description: "List of service names that must use Customer-Managed Encryption Keys." isRequired: true valueType: STRINGLIST substitutionRules: - attributeSubstitutionRule: attribute: "rules[0].org_policy_constraint.policy_rules[0].values.denied_values"REMEDIATION_STEPS: 발견 항목을 해결하는 데 필요한 단계입니다. 이 문자열은 400자(영문 기준)로 제한됩니다.
--rules=[celExpression=CELEXPRESSION],[description=DESCRIPTION],[ruleActionTypes=RULEACTIONTYPES]는 적용할 규칙이며 형식은 다음과 같습니다.CELEXPRESSION: 규칙의 Common Expression Language (CEL) 표현식입니다. CEL 표현식 작성에 대한 자세한 내용은 커스텀 클라우드 제어 규칙 작성을 참조하세요. 포함 사항:expression: CEL 표현식(최대 1, 000자(영문 기준))resourceTypesValues: 리소스 이름이며 형식은SERVICE_NAME/type입니다.values배열을 사용하여 규칙을 적용할 모든 리소스 유형을 나열합니다(예:values=[compute.googleapis.com/Instance]).
DESCRIPTION: 규칙에 대한 설명RULEACTIONTYPES: 규칙이 수행하는 작업입니다. 지원되는 값은rule-action-type-detective,rule-action-type-preventive,rule-action-type-audit입니다.
예를 들어 Cloud Key Management Service 키 순환 기간을 확인하려면 다음을 입력합니다.
--rules="[ { \"celExpression\": { \"expression\": \"has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')\", \"resourceTypesValues\": { \"values\": [ \"cloudkms.googleapis.com/CryptoKey\" ] } }, \"description\": \"Check KMS key rotation period\", \"ruleActionTypes\": [ \"rule-action-type-detective\" ] } ]"또는 규칙을 정의하는 JSON 또는 YAML 파일을 지정할 수 있습니다. 예를 들면
--rules=path_to_file.(yaml|json)입니다. 다음 섹션을 펼쳐 JSON 및 YAML 파일 예시를 확인하세요.JSON 파일 예시
[ { "celExpression": { "expression": "has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')", "resourceTypesValues": { "values": [ "cloudkms.googleapis.com/CryptoKey" ] } }, "description": "Check KMS key rotation period to ensure it is under 60 hours.", "ruleActionTypes": [ "rule-action-type-detective" ] } ]YAML 파일 예시
- celExpression: expression: "has(resource.data.rotationPeriod) && resource.data.rotationPeriod < duration('60h')" resourceTypesValues: values: - cloudkms.googleapis.com/CryptoKey description: "Check KMS key rotation period to ensure it is under 60 hours." ruleActionTypes: - rule-action-type-detectiveSEVERITY: 클라우드 제어의 중요도 수준입니다. 지원되는 값은critical,high,medium,low입니다.SUPPORTED_CLOUD_PROVIDERS,…: 이 클라우드 제어가 적용되는 클라우드 제공업체입니다. 유일하게 지원되는 값은gcp입니다.SUPPORTED_TARGET_RESOURCE_TYPES,…: 클라우드 제어가 지원하는 리소스 유형(App Hub의 조직, 폴더, 프로젝트 또는 앱 지원 폴더)입니다. 지원되는 값은target-resource-crm-type-folder,target-resource-crm-type-org,target-resource-crm-type-project,target-resource-type-application입니다.
예를 들어 리소스 위치를 적용하는 클라우드 제어를 만들려면 다음 명령어를 실행합니다.
gcloud compliance-manager cloud-controls create \
restrict-resource-locations \
--organization=3589215982 \
--location=global \
--display-name="Restrict Resource Locations" \
--description="Enforces checks to ensure resources are only deployed in approved cloud regions." \
--severity=high \
--finding-category="LOCATION_VIOLATION" \
--supported-cloud-providers="gcp" \
--supported-target-resource-types="target-resource-crm-type-project" \
--parameter-spec='name=allowedLocations,isRequired=true,valueType=STRINGLIST,substitutionRules=[{placeholderSubstitutionRule={attribute="rules[0].cel_expression.expression"}}]' \
--rules="[{\"celExpression\": {\"expression\": \"resource.location in \$allowedLocations\", \"resourceTypesValues\": {\"values\": [\"compute.googleapis.com/Instance\"]}}, \"description\": \"Check Compute Engine instance locations\", \"ruleActionTypes\": [\"rule-action-type-detective\"]}]"
동일한 제어를 만들지만 YAML 파일을 사용하여 매개변수와 규칙을 정의하려면 다음을 실행합니다.
gcloud compliance-manager cloud-controls create \
restrict-resource-locations \
--organization=3589215982 \
--location=global \
--display-name="Restrict Resource Locations" \
--description="Enforces checks to ensure resources are only deployed in approved cloud regions." \
--severity=high \
--finding-category="LOCATION_VIOLATION" \
--supported-cloud-providers="gcp" \
--supported-target-resource-types="target-resource-crm-type-project" \
--parameter-spec=parameters.yaml \
--rules=rules.yaml
자세한 내용은 gcloud compliance-manager cloud-controls create를 참조하세요.
Terraform
Terraform을 사용하면 최대 3개의 규칙으로 커스텀 클라우드 제어를 만들 수 있습니다. 각 규칙은 하나의 리소스 유형에만 적용될 수 있습니다.
다음 샘플은 Terraform을 사용하여 커스텀 클라우드 제어를 만드는 방법을 보여줍니다.
커스텀 클라우드 제어 수정
클라우드 제어를 만든 후 이름, 설명, 규칙, 해결 단계, 심각도 수준을 변경할 수 있습니다. 클라우드 제어 카테고리는 변경할 수 없습니다.
Google Cloud 콘솔에서 규정 준수 페이지로 이동합니다.
조직 또는 프로젝트를 선택합니다.
구성 탭에서 클라우드 제어를 클릭합니다. 사용 가능한 클라우드 제어 목록이 표시됩니다.
수정하려는 클라우드 컨트롤을 클릭합니다.
클라우드 제어 세부정보 페이지에서 클라우드 제어가 프레임워크에 포함되어 있지 않은지 확인합니다. 필요한 경우 프레임워크를 수정하여 클라우드 제어를 삭제합니다.
수정을 클릭합니다.
커스텀 클라우드 제어 수정 페이지에서 필요에 따라 이름과 설명을 변경합니다. 계속을 클릭합니다.
규칙, 발견 항목 심각도, 해결 단계를 업데이트합니다. 계속을 클릭합니다.
변경사항을 검토하고 저장을 클릭합니다.
기본 제공 클라우드 제어를 최신 출시 버전으로 업데이트
Google은 서비스에서 새로운 기능을 배포하거나 새로운 권장사항이 등장함에 따라 기본 제공 클라우드 제어에 대한 정기적인 업데이트를 게시합니다. 업데이트에는 새 컨트롤 또는 기존 컨트롤에 대한 변경사항이 포함될 수 있습니다.
구성 탭의 클라우드 제어 대시보드 또는 클라우드 제어 세부정보 페이지에서 기본 제공 클라우드 제어의 출시 버전을 확인할 수 있습니다.
알림을 받은 후 클라우드 제어를 업데이트하려면 클라우드 제어가 포함된 배포된 프레임워크를 업데이트해야 합니다. 자세한 내용은 기본 제공 프레임워크를 최신 버전으로 업데이트를 참조하세요.
커스텀 클라우드 제어 삭제
더 이상 필요하지 않은 클라우드 제어를 삭제합니다. 직접 만든 클라우드 제어만 삭제할 수 있습니다. 기본 제공 클라우드 제어는 삭제할 수 없습니다.
콘솔
Google Cloud 콘솔에서 규정 준수 페이지로 이동합니다.
조직 또는 프로젝트를 선택합니다.
구성 탭에서 클라우드 제어를 클릭합니다. 사용 가능한 클라우드 제어 목록이 표시됩니다.
삭제하려는 클라우드 제어를 클릭합니다.
클라우드 제어 세부정보 페이지에서 클라우드 제어가 프레임워크에 포함되어 있지 않은지 확인합니다. 필요한 경우 프레임워크를 수정하여 클라우드 제어를 삭제합니다.
삭제를 클릭합니다.
삭제 창에서 메시지를 검토합니다.
Delete를 입력하고 확인을 클릭합니다.
CLI
커스텀 클라우드 제어를 삭제하려면 gcloud compliance-manager
cloud-controls delete 명령어를 실행합니다.
gcloud compliance-manager cloud-controls delete CLOUD_CONTROL \
--location=LOCATION \
--organization=ORGANIZATION
다음 값을 바꿉니다.
CLOUD_CONTROL: 클라우드 제어의 이름ORGANIZATION: 조직 ID입니다.LOCATION: 클라우드 제어가 저장되는 리전
예를 들어 이름이 restrict-resource-locations인 클라우드 제어를 삭제하려면 다음을 실행합니다.
gcloud compliance-manager cloud-controls delete \
restrict-resource-locations \
--organization=3589215982 \
--location=global
자세한 내용은 gcloud compliance-manager cloud-controls delete를 참조하세요.
Security Health Analytics 감지기를 클라우드 제어에 매핑
다음 표에서는 규정 준수 관리자 클라우드 제어가 Security Health Analytics 감지기에 매핑되는 방식을 보여줍니다.
주소 주소| Security Health Analytics의 발견 항목 카테고리 | 규정 준수 관리자의 클라우드 제어 이름 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
사용 불가 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
사용 불가 |
|
사용 불가 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|