이 페이지에서는 Security Command Center를 활성화한 후 보안 상황 서비스를 구성하고 사용하는 방법을 설명합니다. 시작하려면 정책 집합으로 구성된 정책 포함 상황을 만들고 상황 배포를 사용해서 상황을 배포해야 합니다. 상황 배포 후에는 드리프트를 모니터링하고 시간별 상황을 더 세분화할 수 있습니다.
시작하기 전에
이 페이지의 남은 태스크를 수행하기 전에 먼저 다음 태스크를 수행하세요.
Security Command Center 프리미엄 또는 Enterprise 등급 활성화
Security Command Center 프리미엄 등급 또는 Enterprise 등급이 조직 수준에서 활성화되었는지 확인합니다.
Security Health Analytics 감지기를 정책으로 사용하려는 경우 활성화 프로세스 중 Security Health Analytics 서비스를 선택합니다.
권한 설정
상황을 사용하는 데 필요한 권한을 얻으려면 관리자에게 Security Posture 관리자(roles/securityposture.admin
) IAM 역할의 부여를 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
보안 상황 역할 및 보안 상황 권한에 대한 자세한 내용은 조직 수준 활성화를 위한 IAM을 참조하세요.
Google Cloud CLI 설정
Google Cloud CLI 버전 461.0.0 이상을 사용해야 합니다.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
서비스 계정 가장 기능을 사용하여 사용자 인증 정보 대신 Google API에 인증하도록 gcloud CLI를 설정하려면 다음 명령어를 실행합니다.
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
자세한 내용은 서비스 계정 가장을 참조하세요.
API 사용 설정
조직 정책 서비스 및 보안 상황 서비스 API를 사용 설정합니다.
gcloud services enable orgpolicy.googleapis.com securityposture.googleapis.com
AWS 연결 구성
AWS와 관련된 기본 제공되는 Security Health Analytics 감지기를 사용하려면 Security Command Center Enterprise를 활성화하고 취약점 감지를 위해 AWS에 연결해야 합니다.
상황 만들기 및 배포
보안 상황을 사용하려면 먼저 다음을 완료해야 합니다.
- 보안 상황에 적용되는 정책을 정의하는 상황 YAML 파일을 만듭니다.
- Google Cloud에서 상황 YAML 파일을 기반으로 하는 상황을 만듭니다.
- 상황을 배포합니다.
다음 섹션에서는 이에 대해 자세히 설명합니다.
상황 YAML 파일 만들기
상황은 함께 배포하는 하나 이상의 정책 집합으로 구성됩니다. 이러한 정책 집합에는 상황에 포함하려는 모든 예방 정책과 감지 정책이 포함됩니다.
상황을 만들려면 다음 중 하나를 수행합니다.
- 사전 정의된 상황 템플릿을 복사합니다. 필요하면 정책을 환경에 적용하고 비즈니스 규정 및 보안 표준을 준수하도록 정책을 수정합니다. 자세한 내용은 사전 정의된 상황 템플릿에서 상황 파일 만들기를 참조하세요.
- 환경에서 기존 정책을 추출합니다. 필요하면 정책이 비즈니스 규정 및 보안 표준을 준수하도록 정책을 수정합니다. 자세한 내용은 기존 환경에서 정책을 추출하여 상황 파일 만들기를 참조하세요.
- 상황을 정의하는 Terraform 리소스를 만듭니다. 자세한 내용은 정책 정의로 Terraform 리소스 만들기를 참조하세요.
상황에서 사용할 수 있는 필드에 대한 자세한 내용은 Posture
참조 및 PolicySet
참조를 참고하세요.
사전 정의된 상황 템플릿에서 상황 파일 만들기
사전 정의된 상황 템플릿을 사용하여 상황 파일을 만들 수 있습니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
템플릿 탭에서 사용할 템플릿을 클릭합니다.
템플릿 세부정보 페이지에서 상황 만들기를 클릭합니다.
상황의 고유한 이름을 제공하고 만들기를 클릭합니다. 상황 세부정보 페이지가 열립니다.
다음 작업 중 하나를 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
_essentials
템플릿 중 하나를 사용한 경우) 상황을 배포할 수 있습니다. 자세한 내용은 상황 배포를 참조하세요. - 정책 세트 또는 정책을 수정해야 하는 경우(예: _enhanced 템플릿 중 하나를 사용한 경우) 상황 YAML 파일 수정 및 상황 상태를
ACTIVE
로 설정을 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
gcloud
- 사전 정의된 상황 템플릿을 검토하여 환경에 적용되는 정책을 확인합니다. 일부 템플릿은 변경하지 않고 적용할 수 있지만 다른 템플릿은 환경에 맞게 정책을 맞춤설정해야 합니다.
다음 방법 중 하나를 사용하여 YAML 파일을 자신의 텍스트 편집기에 복사합니다.
- 사전 정의된 상황 템플릿의 참조 콘텐츠에서 YAML 파일을 복사합니다.
gcloud scc posture-templates describe
명령어를 실행하여 YAML 파일을 복사합니다.
gcloud scc posture-templates describe \ organizations/ORGANIZATION_ID/locations/LOCATION/postureTemplates/POSTURE_TEMPLATE \ --revision-id=REVISION_ID
gcloud scc posture-templates describe \ organizations/ORGANIZATION_ID/locations/global/postureTemplates/POSTURE_TEMPLATE \ --revision-id=REVISION_ID
다음 값을 바꿉니다.
ORGANIZATION_ID
는 Security Command Center 프리미엄 또는 엔터프라이즈 등급을 활성화한 조직입니다.LOCATION
은 상황을 배포 및 저장하려는 위치입니다. 지원되는 유일한 위치는global
입니다.POSTURE_TEMPLATE
은 사전 정의된 상황 템플릿에 설명된 것처럼 사전 정의된 상황의 템플릿 이름입니다.REVISION_ID
는 사전 정의된 상황의 버전입니다. 버전 ID를 포함하지 않으면 사전 정의된 상황의 최신 버전이 표시됩니다.
예를 들어
3589215982
조직 아래의 필수 사전 정의된 상황인 보안 AI를 보려면 다음을 수행합니다.gcloud scc posture-templates describe \ organizations/3589215982/locations/global/postureTemplates/secure_ai_essential \ --revision-id=v.1.0
다음 작업 중 하나를 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
_essentials
템플릿 중 하나를 사용한 경우) 상황을 만들 수 있습니다. 자세한 내용은 상황 만들기를 참조하세요. - 정책 세트 또는 정책을 수정해야 하는 경우 상황 YAML 파일 수정을 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
기존 환경에서 정책을 추출하여 상황 파일 만들기
기존 프로젝트, 폴더, 또는 조직에서 구성한 정책(커스텀 정책을 포함한 조직 정책, 커스텀 감자기를 포함한 모든 Security Health Analytics 감지기)을 추출하여 상태 파일을 만들 수 있습니다. 이미 상황이 적용된 조직, 폴더, 프로젝트에서는 정책을 추출할 수 없습니다.
이 명령어는 이전에 조직, 폴더 또는 프로젝트에 대해 구성한 정책만 추출하며 상위 폴더 또는 조직에서는 정책을 추출하지 않습니다.
Security Command Center Enterprise를 AWS에 연결한 경우 이 명령어는 AWS와 관련된 감지기도 추출합니다(프리뷰).
gcloud scc postures extract
명령어를 실행하여 환경에서 기존 조직 정책 및 Security Health Analytics 감지기를 추출합니다.gcloud scc postures extract POSTURE_NAME \ --workload=WORKLOAD
다음 값을 바꿉니다.
POSTURE_NAME
은 상황의 상대적 리소스 이름입니다. 예를 들면organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.POSTURE_ID
는 63자로 제한됩니다.
WORKLOAD
는 정책을 추출하려는 프로젝트, 폴더, 조직입니다. 워크로드는 다음 중 하나입니다.projects/PROJECT_NUMBER
folder/FOLDER_ID
organizations/ORGANIZATION_ID
예를 들어
6589215984
조직 아래의3589215982
폴더에서 정책을 추출하려면 다음을 실행합니다.gcloud scc postures extract \ organizations/6589215984/locations/global/postures/myStagingPosture \ workload=folder/3589215982 > posture.yaml
수정할 결과
posture.yaml
파일을 엽니다.다음 작업 중 하나를 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
_essentials
템플릿 중 하나를 사용한 경우) 상황을 만들 수 있습니다. 자세한 내용은 상황 만들기를 참조하세요. - 정책 세트 또는 정책을 수정해야 하는 경우 상황 YAML 파일 수정을 완료합니다.
- 아무것도 변경하지 않고 상황을 사용할 수 있는 경우(예:
정책 정의로 Terraform 리소스 만들기
Terraform 구성을 만들어서 상황 리소스를 만들 수 있습니다.
예를 들어 기본 제공 및 커스텀 조직 정책 제약조건과 기본 제공 및 커스텀 Security Health Analytics 감지기를 포함하는 상황 리소스를 만들 수 있습니다. AWS와 관련된 기본 제공되는 Security Health Analytics 감지기에 대한 상황 관리 지원은 프리뷰 상태입니다.
resource "google_securityposture_posture" "posture_example" {
posture_id = "<POSTURE_ID>"
parent = "organizations/<ORGANIZATION_ID>"
location = "global"
state = "ACTIVE"
description = "a new posture"
policy_sets {
policy_set_id = "org_policy_set"
description = "set of org policies"
policies {
policy_id = "canned_org_policy"
constraint {
org_policy_constraint {
canned_constraint_id = "storage.uniformBucketLevelAccess"
policy_rules {
enforce = true
}
}
}
}
policies {
policy_id = "canned_org_policy_for_service"
constraint {
org_policy_constraint {
canned_constraint_id = "run.allowedVPCEgress"
policy_rules {
allow_all: true
condition {
expression: "!(parameters.denyAll or resource.location in parameters.deniedLocations) && (parameters.allowAll or resource.location in parameters.allowedLocations)"
}
parameters {
fields {
key: "denyAll"
value {
bool_value: false
}
}
fields {
key: "allowAll"
value {
bool_value: false
}
}
fields {
key: "deniedLocations"
value {
null_value: NULL_VALUE
}
}
fields {
key: "allowedLocations"
value {
string_value: "allowedLocations.all(location, location in [\342\200\230US\342\200\231, \342\200\230EU\342\200\231])"
}
}
}
resource_types {
included: "run.googleapis.com/Service"
}
}
}
}
}
}
policy_sets {
policy_set_id = "sha_policy_set"
description = "set of sha policies"
policies {
policy_id = "sha_builtin_module"
constraint {
security_health_analytics_module {
module_name = "BIGQUERY_TABLE_CMEK_DISABLED"
module_enablement_state = "ENABLED"
}
}
description = "enable BIGQUERY_TABLE_CMEK_DISABLED"
}
policies {
policy_id = "aws_sha_builtin_module"
constraint {
security_health_analytics_module {
module_name = "S3_BUCKET_LOGGING_ENABLED"
module_enablement_state = "ENABLED"
}
}
description = "enable S3_BUCKET_LOGGING_ENABLED"
}
policies {
policy_id = "sha_custom_module"
constraint {
security_health_analytics_custom_module {
display_name = "custom_SHA_policy"
config {
predicate {
expression = "resource.rotationPeriod > duration('2592000s')"
}
custom_output {
properties {
name = "duration"
value_expression {
expression = "resource.rotationPeriod"
}
}
}
resource_selector {
resource_types = ["cloudkms.googleapis.com/CryptoKey"]
}
severity = "LOW"
description = "Custom Module"
recommendation = "Testing custom modules"
}
module_enablement_state = "ENABLED"
}
}
}
}
}
자세한 내용은 google_securityposture_posture를 참조하세요.
상황 YAML 파일 수정
상황 YAML 파일을 수정하려면 다음 단계를 완료하세요.
- 텍스트 편집기에서 상황 YAML 파일을 엽니다.
파일 시작 부분에서
name
,description
,state
를 확인합니다.파일 시작 부분에서
name
,description
,state
를 확인합니다.name: organizations/ORGANIZATION_ID/locations/global/posture/POSTURE_ID description: DESCRIPTION state: STATE
이러한 필드에 대한 자세한 내용은
Posture
참조를 확인하세요.예를 들면 다음과 같습니다.
name: organizations/3589215982/locations/global/posture/stagingAIPosture description: This posture applies to staging environments for Vertex AI. state: ACTIVE
요구사항에 맞게 파일 내에서 정책을 맞춤설정합니다.
사용할 수 있는 필드에 대한 자세한 내용은
PolicySet
참조를 참고하세요.기존 정책 및 해당 값을 검토합니다. 환경에 맞는 정보가 필요한 정책의 경우 값을 적절하게 설정합니다. 예를 들어 사전 정의된 상황이 확장된 보안 AI에 있는
ainotebooks.accessMode
정책의 경우policy_rules
아래에 허용 액세스 모드를 추가합니다.- policy_id: Define access mode for Vertex AI Workbench notebooks and instances compliance_standards: - standard: NIST SP 800-53 control: AC-3(3) - standard: NIST SP 800-53 control: AC-6(1) constraint: org_policy_constraint: canned_constraint_id: ainotebooks.accessMode policy_rules: - values: allowed_values: service-account description: This list constraint defines the modes of access allowed to Vertex AI Workbench notebooks and instances where enforced. The allow or deny list can specify multiple users with the service-account mode or single-user access with the single-user mode. The access mode to be allowed or denied must be listed explicitly.
조직 정책 제약조건에 설명된 대로 조직 정책 제약조건을 더 추가합니다. 맞춤 조직 정책을 정의하는 경우 YAML 파일에 맞춤 제약 조건 정의가 포함되어 있는지 확인합니다. 다른 방법(예: Google Cloud 콘솔 사용)으로 만든 커스텀 제약조건은 사용할 수 없습니다.
예를 들어 이미지 스토리지 및 디스크 인스턴스화에 사용할 수 있는 프로젝트를 정의하도록
compute.trustedImageProjects
제약조건을 설정해야 할 수 있습니다. 이 예시를 복사하는 경우allowed_values
를 적절한 프로젝트 목록으로 바꿔야 합니다.- policy_id: Define projects with trusted images. compliance_standards: - standard: control: constraint: org_policy_constraint: canned_constraint_id: compute.trustedImageProjects policy_rules: - values: allowed_values: - project1 - project2 - projectN description: This is a complete list of projects from which images can be used.
Security Health Analytics 발견 항목에 설명된 것과 같이 Security Health Analytics 감지기를 더 추가합니다. 예를 들어 프로젝트에서 인증에 API 키를 사용하지 않는 경우 발견 항목을 만들도록 Security Health Analytics 감지기를 추가합니다.
- policy_id: API Key Exists constraint: securityHealthAnalyticsModule: moduleEnablementState: ENABLED moduleName: API_KEY_EXISTS
또 다른 예시로, Vertex AI 데이터 세트가 암호화되었는지 여부를 확인하기 위해 Security Health Analytics 커스텀 모듈을 추가할 수 있습니다.
- policy_id: CMEK key is use for Vertex AI DataSet compliance_standards: - standard: NIST SP 800-53 control: SC-12 - standard: NIST SP 800-53 control: SC-13 constraint: security_health_analytics_custom_module: display_name: "vertexAIDatasetCMEKDisabled" config: customOutput: {} predicate: expression: "!has(resource.encryptionSpec)" resource_selector: resource_types: - aiplatform.googleapis.com/Dataset severity: CRITICAL description: "When enforced, this detector finds whether a dataset is not encrypted using CMEK." recommendation: "Restore the SHA module. See https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview." module_enablement_state: ENABLED
또 다른 예시로 Security Command Center Enterprise에 대해 AWS와 관련된 Security Health Analytics 감지기를 추가합니다(프리뷰).
- policy_set_id: AWS policy set description: Policy set containing AWS built-in SHA modules for securing S3 buckets. policies: - policy_id: S3 bucket replication enabled compliance_standards: - standard: NIST 800-53 R5 control: SI-13(5) constraint: securityHealthAnalyticsModule: moduleEnablementState: ENABLED moduleName: S3_BUCKET_REPLICATION_ENABLED description: This control checks whether an Amazon S3 bucket has Cross-Region Replication enabled. The control fails if the bucket does not have Cross-Region Replication enabled or if Same-Region Replication is also enabled. - policy_id: S3 bucket logging enabled compliance_standards: - standard: NIST 800-53 R5 control: SI-7(8) - standard: PCI DSS 3.2.1 control: 10.3.1 constraint: securityHealthAnalyticsModule: moduleEnablementState: ENABLED moduleName: S3_BUCKET_LOGGING_ENABLED description: AWS S3 Server Access Logging feature records access requests to storage buckets which is useful for security audits. By default, server access logging is not enabled for S3 buckets.
AWS와 관련된 감지기를 추가하는 경우 조직 수준에서 상황을 배포해야 합니다.
시간 경과에 따라 수행되는 변경사항을 추적할 수 있도록 버전 제어 소스 저장소에 상황 파일을 업로드합니다.
상황 만들기
이 태스크를 완료하여 배포할 수 있는 Security Command Center에서 상황 리소스를 만듭니다. Google Cloud 콘솔을 사용하여 사전 정의된 상황 템플릿에서 상황을 만든 경우 상황 리소스가 자동으로 만들어집니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 만들기를 클릭합니다. 기존 상황 또는 템플릿으로 시작하거나 리소스에 적용된 정책을 사용하여 상황을 만들 수 있습니다.
기존 상황 또는 템플릿을 사용하여 상황 만들기
- 기존 상황 또는 템플릿으로 시작(상황 찾아보기)을 선택합니다.
- 자세 이름, 설명과 같은 상황 세부정보를 지정합니다.
- 상황 선택을 클릭합니다. 기존 상황 또는 템플릿을 기반으로 상황을 만들 수 있습니다.
- 상황을 선택하여 기존 상황으로 상황을 만듭니다. 표시된 상황 목록에서 상황을 선택한 다음 선택한 상황에 사용할 수 있는 버전 목록에서 버전을 하나 이상 선택합니다.
- 템플릿을 선택하여 템플릿을 사용하여 상황을 만든 다음 표시된 템플릿 목록에서 하나 이상의 템플릿을 선택합니다.
- 저장을 클릭합니다. 정책 세트 섹션에서 선택한 상황과 연결된 정책 세트 목록을 볼 수 있습니다.
- 정책 세트 목록에서 정책을 선택합니다. 이 페이지에서 정책을 수정하고 정책을 다른 정책 세트로 이동할 수도 있습니다. 동일한 정책 세트 내에 이름이 동일한 두 정책으로 상태를 만들 수 없습니다.
- 만들기를 클릭합니다.
리소스에 적용된 정책을 사용하여 상황 만들기
- 리소스에 적용된 상황으로 시작(리소스 찾아보기)을 선택합니다.
- 자세 이름, 설명과 같은 상황 세부정보를 지정합니다.
- 리소스 선택을 클릭합니다.
- 표시된 리소스 목록에서 리소스를 선택하고 만들기를 클릭합니다.
내가 만든 상황의 정보를 보여주는 상황 세부정보 페이지로 리디렉션됩니다. 해당 상황과 연결된 정책 세트를 볼 수 있습니다.
gcloud
gcloud scc postures create
명령어를 실행하여posture.yaml
파일을 사용해서 상황을 만듭니다.gcloud scc postures create POSTURE_NAME \ --posture-from-file=POSTURE_FROM_FILE
다음 값을 바꿉니다.
POSTURE_NAME
은 상황의 상대적 리소스 이름입니다. 예를 들면organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.POSTURE_ID
는 63자로 제한됩니다.
예를 들어
organizations/3589215982
조직 아래에posture-example-1
ID를 사용해서 상황을 만들려면 다음을 실행합니다.gcloud scc postures create \ organizations/3589215982/locations/global/postures/posture-example-1 \ --posture-from-file=posture.yaml
상황 만들기 프로세스가 실패하면 상황을 삭제하고, 오류를 문제 해결한 후 다시 시도합니다.
상황이 성공적으로 생성되었는지 확인하려면 상황 보기를 참조하세요.
이 상황을 환경에 적용하려면 상황을 배포해야 합니다.
Terraform
상황 리소스에 대해 Terraform 구성을 만든 경우에는 코드형 인프라 파이프라인을 사용해서 이를 프로비저닝해야 합니다.
자세한 내용은 Google Cloud의 Terraform을 참조하세요.
상황 배포
상황을 만든 후 조직의 특정 리소스에 정책 및 정책의 정의를 적용하고 드리프트를 모니터링할 수 있도록 프로젝트, 폴더, 조직에 상황을 배포합니다. 프로젝트, 폴더, 조직에 상황을 하나만 배포할 수 있습니다.
상황 상태가 ACTIVE
인지 확인합니다.
상황을 배포하면 다음 작업이 수행됩니다.
- 조직 정책 및 Security Health Analytics 감지기의 정의가 적용됩니다.
- 커스텀 조직 정책의 커스텀 제약조건은 제약조건 ID와 함께 생성되어 상황에서 정의한 제약조건 ID의 서픽스로 상황 버전 ID를 포함합니다.
맞춤 모듈의 기본 상태는 사용 설정됨으로 설정됩니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 탭에서 배포하려는 상황을 클릭합니다.
상황 세부정보 페이지에서 상황 버전을 선택합니다. 선택한 상황 버전이 활성 상태여야 합니다.
리소스에 적용을 클릭합니다.
선택을 클릭하여 상황을 배포하려는 조직, 폴더 또는 프로젝트를 선택합니다.
상황 적용을 클릭합니다.
gcloud
gcloud scc posture-deployments create
명령어를 실행하여 프로젝트, 폴더, 조직에 상황을 배포합니다.
gcloud scc posture-deployments create POSTURE_DEPLOYMENT_NAME \
--posture-name=POSTURE_NAME \
--posture-revision-id=POSTURE_REVISION_ID \
--target-resource=TARGET_RESOURCE
다음 값을 바꿉니다.
POSTURE_DEPLOYMENT_NAME
은 상황 배포에 대한 상대 리소스 이름입니다. 형식은organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID
입니다.LOCATION
은global
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.--posture-name=POSTURE_NAME
은 배포하려는 상황의 이름입니다. 형식은organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다.
상황에 AWS와 관련된 감지기가 포함된 경우 조직 수준(미리보기)에서 상황을 배포해야 합니다.
예를 들어 상황을 배포하려면 다음 명령어를 실행합니다.
gcloud scc posture-deployments create \
organizations/3589215982/locations/global/postureDeployments/postureDeployment123 \
--posture-name=organizations/3589215982/locations/global/postures/StagingAIPosture \
--posture-revision-id=version1 \
--target-resource=projects/4589215982
명령어가 완료되면 상태 정보를 볼 수 있습니다. 상황 배포 만들기 프로세스가 실패하면 배포를 삭제하고, 오류 문제를 해결한 후 다시 시도합니다.
Terraform
Terraform 리소스를 만들어서 상황을 배포할 수 있습니다.
resource "google_securityposture_posture_deployment" "posture_deployment_example" {
posture_deployment_id = "<POSTURE_DEPLOYMENT_ID>"
parent = "organizations/<ORGANIZATION_ID>"
location = "global"
description = "a new posture deployment"
target_resource = "<TARGET_RESOURCE>"
posture_id = "<POSTURE_NAME>"
posture_revision_id = "<POSTURE_REVISION_ID>"
}
자세한 내용은 google_securityposture_posture_deployment를 참조하세요.
Terraform 리소스를 만든 후 코드형 인프라 파이프라인을 사용하여 이를 프로비저닝합니다.
상황 및 상황 배포 정보 보기
상황 및 상황 배포 정보를 확인하여 다음과 같은 정보를 참조할 수 있습니다.
- 배포된 상황 및 상황이 적용된 리소스 계층 구조에서의 위치(조직, 프로젝트, 폴더)
- 상황의 버전 및 상태
- 상황 배포의 운영 세부정보
상황 보기
상태 및 정책 정의와 같은 상황에 대한 정보를 볼 수 있습니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직을 선택합니다.
상황 탭에서 확인하려는 상황을 클릭합니다. 상황 세부정보가 표시됩니다.
gcloud
gcloud scc postures describe
명령어를 실행하여 사용자가 만든 상황을 확인합니다.
gcloud scc postures describe POSTURE_NAME \
--revision-id=REVISION_ID
다음 값을 바꿉니다.
POSTURE_NAME
은 상황의 상대적 리소스 이름입니다. 예를 들면organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다.LOCATION
은global
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.revision-id=REVISION_ID
는 확인하려는 상황의 버전을 지정하는 선택적인 플래그입니다. 플래그를 포함하지 않으면 최신 버전이 반환됩니다.
예를 들어 이름이 organizations/3589215982/locations/global/postures/posture-example-1
이고 버전 ID가 abcdefgh
인 상황을 보려면 다음을 수행합니다.
gcloud scc postures describe \
organizations/3589215982/locations/global/postures/posture-example-1 \
--revision-id=abcdefgh
상황 배포 작업 관련 정보 보기
gcloud scc posture-operations describe
명령어를 실행하여 상황 배포 작업에 대한 작업 세부정보를 확인합니다.
gcloud scc posture-operations describe OPERATION_NAME
여기서 OPERATION_NAME
은 작업의 상대 리소스 이름입니다. 형식은 organizations/ORGANIZATION_ID/locations/global/operations/OPERATION_ID
입니다.
OPERATION_ID
는 상황 명령어를 실행할 때 --async
인수를 사용하여 얻을 수 있습니다.
예를 들어 이름이 organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae
인 스캔 작업을 보려면 다음을 실행합니다.
gcloud scc posture-operations describe \
organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae
상황 배포 정보 보기
상황이 배포된 위치 및 배포 상태를 볼 수 있습니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 탭에서 배포한 상황을 클릭합니다.
리소스 탭으로 이동하여 상황이 배포된 프로젝트, 폴더, 조직과 배포 상태를 확인합니다.
gcloud
gcloud scc posture-deployments describe
명령어를 실행하여 배포된 상황 관련 정보를 확인합니다.
gcloud scc posture-deployments describe POSTURE_DEPLOYMENT_NAME
여기서 POSTURE_DEPLOYMENT_NAME
은 상황 배포에 대한 상대 리소스 이름입니다. 형식은 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID
입니다.
LOCATION
은global
입니다.POSTURE_DEPLOYMENT_ID
는 상황 배포의 고유 이름입니다.
예를 들어 이름이 organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1
인 상황 배포의 세부정보를 보려면 다음을 실행합니다.
gcloud scc posture-deployments describe \
organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1
상황 및 상황 배포 업데이트
다음을 업데이트할 수 있습니다.
- 상황의 상태입니다.
- 상황의 정책 정의입니다.
- 상황이 배포된 조직, 폴더, 프로젝트입니다.
상황의 정책 정의 업데이트
Google Cloud 서비스를 추가로 사용 설정하거나, 리소스를 추가로 배포하거나, 신규 또는 변경되는 규정 준수 요구사항에 따라 추가 정책 요구되는 경우 상황 업데이트가 필요할 수 있습니다. 배포된 상황 버전을 업데이트하는 경우 이 태스크에서 새 상황 버전을 만듭니다. 그렇지 않으면 업데이트 명령어를 실행할 때 지정한 상황 버전이 업데이트됩니다.
- 텍스트 편집기에서 YAML 파일을 엽니다. 업데이트할 필드를 해당 값과 함께 추가합니다. 정책 집합을 업데이트하는 경우 이미 존재하는 정책 집합을 포함하여 상황에 포함할 모든 정책 집합이 파일에 포함되어 있는지 확인합니다. 자세한 내용은 상황 YAML 파일 수정을 참조하세요.
gcloud scc postures update
명령어를 실행하여 상황을 업데이트합니다.gcloud scc postures update POSTURE_NAME \ --posture-from-file=POSTURE_FROM_FILE \ --revision-id=POSTURE_REVISION_ID \ --update-mask=UPDATE_MASK
다음 값을 바꿉니다.
POSTURE_NAME
은 상황의 상대적 리소스 이름입니다. 예를 들면organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.
POSTURE_FROM_FILE
은 변경사항이 포함된posture.yaml
파일의 상대 또는 절대 경로입니다.LOCATION
은global
입니다.POSTURE_ID
는 조직에 고유한 상황의 영숫자 이름입니다.
POSTURE_FROM_FILE
은 변경사항이 포함된posture.yaml
파일의 상대 또는 절대 경로입니다.--revision-id=REVISION_ID
는 배포하려는 상황 버전입니다. 상황이 이미 배포되었으면 보안 상황 서비스가 다른 버전 ID의 새로운 상황 버전을 자동으로 만들고 출력에 해당 버전 ID를 포함합니다.--update-mask=UPDATE_MASK
는 쉼표로 구분된 형식의 업데이트하려는 필드 목록입니다. 이 인수는 선택사항입니다.UPDATE_MASK
를 다음 값 중 하나로 설정할 수 있습니다.*
또는 지정되지 않음: 정책 집합 및 상황 설명에 수행한 변경사항을 적용합니다.policy_sets
: 정책 집합에 수행한 변경사항만 적용합니다.description
: 상황 설명에 수행한 변경사항만 적용합니다.policy_sets, description
: 정책 집합 및 상황 설명에 수행한 변경사항을 적용합니다.state
: 상황 변경사항만 적용합니다.
organizations/3589215982/locations/global
조직 아래에서 이름이posture-example-1
이고 버전 ID가abcd1234
로 설정된 상황을 업데이트하려면 다음을 실행합니다.gcloud scc postures update \ organizations/3589215982/locations/global/posture-example-1 \ --posture-from-file=posture.yaml --revision-id=abcd1234 --update-mask=policy_sets
상황 업데이트 프로세스가 실패하면 오류 문제를 해결한 후 다시 시도합니다.
상황이 성공적으로 업데이트되었는지 확인하려면 상황 보기를 참조하세요.
상황의 상태 변경
상황의 상태에 따라 프로젝트, 폴더, 조직에 대한 배포가 가능한지 여부가 결정됩니다.
상황의 상태는 다음과 같습니다.
DRAFT
: 상황 버전 배포가 준비되지 않았습니다.DRAFT
상태인 상황 버전은 배포할 수 없습니다.ACTIVE
: 상황 버전을 배포할 수 있습니다. 상태를ACTIVE
에서DRAFT
또는DEPRECATED.
로 변경할 수 있습니다.DEPRECATED
:DEPRECATED
상황 버전을 리소스에 배포할 수 없습니다. 상황 버전을 지원 중단하려면 먼저 상황의 모든 기존 상황 배포를 삭제해야 합니다. 지원 중단된 상황 버전을 다시 배포하려면 상태를ACTIVE
로 변경해야 합니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 탭에서 업데이트할 상황을 클릭합니다.
상황 세부정보 페이지에서 수정을 클릭합니다.
상황 상태를 선택하고 저장을 클릭합니다.
gcloud
상황의 상태를 변경하려면 gcloud scc postures update
명령어를 실행합니다.
다른 필드를 업데이트하는 것과 동시에 상황 상태를 업데이트할 수 없습니다. gcloud scc postures update
명령어 실행에 대한 안내는 상황 YAML 파일 수정을 참조하세요.
상황 배포 업데이트
새 상황을 배포하거나 상황의 새 버전을 배포하려면 프로젝트, 폴더 또는 조직에서 상황 배포를 업데이트합니다.
업데이트하려는 상황 버전에 Google Cloud 콘솔을 사용하여 삭제된 커스텀 조직 제약조건이 포함된 경우 동일한 상황 ID를 사용하여 상황 배포를 업데이트할 수 없습니다. 조직 정책 서비스로 인해 이름이 동일한 커스텀 조직 제약조건을 만들 수 없습니다. 대신 새 버전의 상황을 만들거나 다른 상황 ID를 사용해야 합니다.
또한 업데이트 프로세스의 일환으로 삭제된 정책 배포의 발견사항은 비활성화됩니다.
콘솔
gcloud
gcloud scc posture-deployments update
명령어를 실행하여 상황을 배포합니다.
gcloud scc posture-deployments update POSTURE_DEPLOYMENT_NAME \
--description=DESCRIPTION \
--update-mask=UPDATE_MASK \
--posture-id=POSTURE_ID \
--posture-revision-id=POSTURE_REVISION_ID
다음 값을 바꿉니다.
POSTURE_DEPLOYMENT_NAME
은 상황 배포에 대한 상대 리소스 이름입니다. 형식은organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID
입니다.POSTURE_DEPLOYMENT_ID
는 상황 배포의 고유 이름입니다.
--description=DESCRIPTION
은 배포된 상황에 대한 선택적인 설명입니다.--posture-id=POSTURE_ID
는 조직에 고유한 상황의 이름입니다. 형식은organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_NAME
입니다.--posture-revision-id=POSTURE_REVISION_ID
는 배포하려는 상황 버전입니다. 이 버전은 상황 만들기 또는 상황 보기 시에 수신되는 응답으로부터 얻을 수 있습니다.--update-mask=UPDATE_MASK
는 쉼표로 구분된 형식의 업데이트하려는 필드 목록입니다. 이 인수는 선택사항입니다.
예를 들어 다음 기준에 따라 상황 배포를 업데이트합니다.
- 조직:
organizations/3589215982/locations/global
- 상황 배포 ID:
postureDeploymentexample
- 상황 ID:
StagingAIPosture
- 버전:
version2
다음 명령어를 실행합니다.
gcloud scc posture-deployments update \
organizations/3589215982/locations/global/postureDeployments/postureDeploymentexample \
--posture-id=organizations/3589215982/locations/global/postures/StagingAIPosture \
--posture-revision-id=version2
명령어가 완료되면 상태 정보를 볼 수 있습니다. 상황 배포 업데이트 프로세스가 실패하면 배포를 삭제하고, 오류 문제를 해결한 후 다시 시도합니다.
상황 드리프트 모니터링
보안 상황 내에서 정의된 정책으로부터 배포된 상황의 드리프트를 모니터링할 수 있습니다. 드리프트는 상황 외부에서 발생하는 정책에 대한 변경사항입니다. 예를 들어 드리프트는 관리자가 상황 배포를 업데이트하는 대신 콘솔에서 정책 정의를 변경할 때 발생합니다.
보안 상황 서비스는 드리프트가 발생할 때마다 Google Cloud 콘솔 또는 gcloud CLI에서 볼 수 있는 발견 항목을 만듭니다.
콘솔
Vertex AI 워크로드에 적용되는 상태를 만든 경우 발견 항목 페이지 및 개요 페이지의 두 가지 방법으로 드리프트를 모니터링할 수 있습니다. 다른 모든 상황의 경우 발견 항목 페이지에서 드리프트를 모니터링할 수 있습니다.
발견 항목 페이지에서 드리프트를 모니터링하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 발견 항목 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
빠른 필터 창에서 상황 위반 발견 항목을 선택합니다. 쿼리 미리보기에 다음 필터를 입력할 수도 있습니다.
state="ACTIVE" AND NOT mute="MUTED" AND finding_class="POSTURE_VIOLATION"
발견 항목의 세부정보를 보려면 발견 항목을 클릭합니다.
개요 페이지에서 드리프트를 모니터링하려면 다음 안내를 따르세요(Vertex AI 워크로드만 해당). 1 Google Cloud 콘솔에서 개요 페이지로 이동합니다.
1. 표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다. 1. AI 워크로드 발견 항목 창을 검토합니다.
- 취약점 탭에는 Vertex AI 워크로드에 특별히 적용되는 Security Health Analytics 커스텀 모듈과 관련된 모든 취약점이 표시됩니다.
- 정책 드리프트 탭에는 상황에 적용한 Vertex AI 조직 정책과 관련된 모든 드리프트가 표시됩니다.
- 발견 항목의 세부정보를 보려면 발견 항목을 클릭합니다.
gcloud
gcloud CLI에서 드리프트 발견 항목을 보려면 다음을 실행합니다.
gcloud scc findings list ORGANIZATION_ID \
--filter="category=\"SECURITY_POSTURE_DRIFT\""
여기서 ORGANIZATION_ID
는 조직의 ID입니다.
이러한 발견 항목에 대한 자세한 내용은 보안 상황 서비스 발견 항목을 참조하세요. 이러한 발견 항목은 Security Command Center에서 기타 발견 항목을 내보내는 것과 동일한 방식으로 내보낼 수 있습니다. 자세한 내용은 통합 옵션 및 Security Command Center 데이터 내보내기를 참조하세요.
드리프트 발견 항목을 비활성화하려면 동일한 상황 ID 및 상황 버전으로 상황 배포를 업데이트할 수 있습니다.
테스트 목적으로 드리프트 발견 항목 생성
상황을 배포한 후 정책에서 드리프트를 모니터링할 수 있습니다. 테스트 환경에서 드리프트 발견 항목이 어떻게 작동하는지 확인하려면 다음을 수행합니다.
콘솔에서 조직 정책 페이지로 이동합니다.
배포된 상황에 정의한 정책 중 하나를 수정합니다. 예를 들어 사전 정의된 보안 AI 상황을 사용하는 경우 새 Vertex AI Workbench 노트북 및 인스턴스에서 공개 IP 액세스 제한 정책을 수정할 수 있습니다.
정책을 변경한 후 정책 설정을 클릭합니다.
발견 항목 페이지로 이동합니다.
빠른 필터 창의 소스 표시 이름 섹션에서 보안 상황을 선택합니다. 변경사항 관련 발견 항목이 5분 내에 표시됩니다.
발견 항목의 세부정보를 보려면 발견 항목을 클릭합니다.
상황 배포 삭제
상황이 올바르게 배포되지 않았거나, 특정 상황이 더 이상 필요하지 않거나, 특정 상황을 더 이상 프로젝트, 폴더, 조직에 할당하지 않으려는 경우 상황 배포를 삭제할 수 있습니다. 상황 배포를 삭제하려면 상황 배포가 다음 상태 중 하나여야 합니다.
ACTIVE
CREATE_FAILED
UPDATE_FAILED
DELETE_FAILED
상황 배포 상태를 확인하려면 상황 배포 관련 정보 보기를 참조하세요.
상황 배포를 삭제하면 이를 할당한 리소스(조직, 폴더, 프로젝트)에서 상황이 삭제됩니다. 또한 연결된 발견 항목도 비활성화됩니다.
다양한 유형의 정책에 대한 출력은 다음과 같습니다.
- 맞춤 조직 정책이 포함된 상태 프로필 배포를 삭제하면 맞춤 조직 정책이 삭제됩니다. 하지만 커스텀 제약조건은 계속 존재합니다.
기본 제공되는 Security Health Analytics 감지기가 포함된 상황 배포를 삭제할 경우 Security Health Analytics 모듈의 최종 상태는 배포가 존재하는 조직, 폴더 또는 프로젝트에 따라 달라집니다.
- 폴더 또는 프로젝트에 상황을 배포한 경우 기본 제공 Security Health Analytics 감지기는 상위 조직 또는 폴더에서 상태를 상속합니다.
- 조직 수준에서 상황을 배포한 경우 기본 제공 Security Health Analytics 감지기가 기본 상태로 되돌아갑니다. 기본 상태에 대한 설명은 감지기 사용 설정 및 중지를 참조하세요.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 탭에서 할당된 리소스에서 삭제하려는 상황을 클릭합니다.
상황 세부정보 페이지에서 상황 버전을 선택하고 리소스로 이동합니다.
현재 활성 상태 버전이 배포된 리소스 목록에서 삭제를 클릭합니다.
gcloud
gcloud scc posture-deployments delete
명령어를 실행하여 상황 배포를 삭제합니다.
gcloud scc posture-deployments deletePOSTURE_DEPLOYMENT_NAME
POSTURE_DEPLOYMENT_NAME
은 상황 배포에 대한 상대 리소스 이름입니다. 형식은 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID
입니다.
POSTURE_DEPLOYMENT_ID
는 상황 배포의 고유 이름입니다.
예를 들어 이름이 organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1
인 상황 배포를 삭제하려면 다음을 실행합니다.
gcloud scc posture-deployments delete \
organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1
상황 삭제
상황을 삭제하면 모든 버전도 삭제됩니다. 버전이 배포된 경우 상황을 삭제할 수 없습니다. 이 태스크를 완료하려면 먼저 모든 상황 배포를 삭제해야 합니다.
콘솔
Google Cloud 콘솔에서 상황 관리 페이지로 이동합니다.
표시된 조직이 Security Command Center 프리미엄 또는 Enterprise 등급을 활성화한 조직인지 확인합니다.
상황 탭에서 삭제하려는 상황을 클릭합니다.
상황 세부정보 페이지에서 삭제를 클릭합니다.
gcloud
gcloud scc postures delete
명령어를 실행하여 상황을 삭제합니다.
gcloud scc postures delete POSTURE_NAME
POSTURE_NAME
는 상황의 상대적 리소스 이름입니다. 예를 들면 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID
입니다. 상황 ID는 조직에 고유한 상황의 영숫자 이름입니다.
예를 들어 이름이 organizations/3589215982/locations/global/postures/posture-example-1
인 상황을 삭제하려면 다음을 실행합니다.
gcloud scc postures delete \
organizations/3589215982/locations/global/postures/posture-example-1
다음 단계
- 보안 상황 개요 읽기
- Security Health Analytics용 커스텀 모듈 알아보기
- 커스텀 조직 정책 제약조건 알아보기
- 상황 관련 작업의 감사 로그 확인
- 보안 상황 서비스 데이터 내보내기