이 페이지에서는 Security Command Center API 알림을 사용 설정하는 방법을 설명합니다.
알림은 몇 분 내로 Pub/Sub 주제에 발견 항목과 발견 항목 업데이트를 전송합니다. Security Command Center API 알림에는 Security Command Center에서Google Cloud 콘솔에 표시되는 모든 발견 항목 정보가 포함됩니다.
Pub/Sub의 Security Command Center 알림을 Cloud Run 함수 작업에 직접 연결할 수 있습니다. 응답, 보강, 구제 조치에 도움이 되는 함수 예시는 Cloud Run 함수 코드의 Security Command Center 오픈소스 저장소를 참조하세요. 저장소에는 보안 발견 항목에 대한 자동 작업을 수행하는 데 도움이 되는 솔루션이 포함되어 있습니다.
또는 발견 항목을 BigQuery로 내보낼 수 있으며, Google Cloud 콘솔에서 Pub/Sub에 대해 지속적 내보내기를 설정할 수 있습니다.
시작하기 전에
-
Security Command Center API 알림을 설정하고 구성하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Security Command Center가 활성화된 조직 또는 프로젝트의 보안 센터 관리자(
roles/securitycenter.admin
) -
Pub/Sub 주제를 만들 프로젝트의 프로젝트 IAM 관리자(
roles/resourcemanager.projectIamAdmin
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
Security Command Center가 활성화된 조직 또는 프로젝트의 보안 센터 관리자(
-
Enable the Security Command Center API:
gcloud services enable securitycenter.googleapis.com
데이터 상주 및 알림
Security Command Center에 데이터 상주가 사용 설정된 경우 Pub/Sub(notificationConfig
리소스)에 대한 지속적인 내보내기를 정의하는 구성은 데이터 상주 제어의 대상이 되며 Security Command Center 위치에 저장됩니다.
Security Command Center 위치의 발견 항목을 Pub/Sub로 내보내려면 발견 항목과 동일한 Security Command Center 위치에 지속적 내보내기를 구성해야 합니다.
지속적 내보내기에 사용된 필터는 상주 제어가 적용되는 데이터를 포함할 수 있기 때문에 이를 만들기 전에 올바른 위치를 지정해야 합니다. Security Command Center는 내보내기를 만드는 위치를 제한하지 않습니다.
지속적 내보내기는 생성되는 위치에만 저장되며 다른 위치에서 보거나 수정할 수 없습니다.
지속적 내보내기를 만든 후에는 해당 위치를 변경할 수 없습니다. 위치를 변경하려면 지속적 내보내기를 삭제하고 새 위치에 다시 만들어야 합니다.
API 호출을 사용해서 지속적 내보내기를 검색하려면 notificationConfig
의 전체 리소스 이름에 위치를 지정해야 합니다. 예를 들면 다음과 같습니다.
GET https://securitycenter.googleapis.com/v2/organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01
마찬가지로 gcloud CLI를 사용하여 지속적 내보내기를 가져오려면 --location
플래그를 사용하여 위치를 지정해야 합니다. 예를 들면 다음과 같습니다.
gcloud scc notifications describe myContinuousExport --organization=123 \ --location=us
Pub/Sub 주제 설정
이 태스크에서는 알림을 보낼 Pub/Sub 주제를 만들고 구독합니다.
1단계: Pub/Sub 설정
Pub/Sub 주제를 설정하고 구독하려면 다음을 수행합니다.
Google Cloud 콘솔로 이동합니다.
Security Command Center API를 사용 설정한 프로젝트를 선택합니다.
Cloud Shell 활성화를 클릭합니다.
선택사항: 새 Pub/Sub 주제를 만들려면 다음 명령어를 실행합니다.
gcloud pubsub topics create TOPIC_ID
TOPIC_ID
를 주제 이름으로 바꿉니다.주제에 대한 구독을 만듭니다.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
다음을 바꿉니다.
SUBSCRIPTION_ID
: 구독 IDTOPIC_ID
: 주제 ID
Pub/Sub 설정에 대한 자세한 내용은 주제 및 구독 관리를 참조하세요.
2단계: Pub/Sub 주제에 역할 부여
NotificationConfig
를 만들려면 구독을 만든 Pub/Sub 주제에 Pub/Sub 관리자 역할(roles/pubsub.admin
)이 있어야 합니다.
이 역할을 부여하려면 다음 단계를 따르세요.
Google Cloud 콘솔로 이동합니다.
Security Command Center API를 사용 설정한 프로젝트를 선택합니다.
Cloud Shell 활성화를 클릭합니다.
Pub/Sub 주제의 Google 계정에 필요한 역할을 부여합니다.
gcloud pubsub topics add-iam-policy-binding \ projects/PUBSUB_PROJECT/topics/TOPIC_ID \ --member="user:GOOGLE_ACCOUNT" \ --role="roles/pubsub.admin"
다음을 바꿉니다.
PUBSUB_PROJECT
: Pub/Sub 주제가 포함된 Google Cloud 프로젝트입니다.TOPIC_ID
: 주제 IDGOOGLE_ACCOUNT
: Google 계정의 이메일 주소입니다.
NotificationConfig 만들기
NotificationConfig
를 만들기 전에 각 조직에는 제한된 수의 NotificationConfig
파일이 있을 수 있습니다. 자세한 내용은 할당량 및 제한을 참조하세요.
NotificationConfig
에는 알림을 유용한 이벤트로 제한하는 filter
필드가 포함되어 있습니다. 이 필드는 Security Command Center API findings.list
메서드에서 사용할 수 있는 모든 필터를 허용합니다.
NotificationConfig
를 만들 때 Google Cloud 리소스 계층 구조(조직, 폴더 또는 프로젝트)에서 NotificationConfig
의 상위 요소를 지정합니다. NotificationConfig
를 검색, 업데이트 또는 삭제해야 하는 경우 참조할 때 상위 조직, 폴더 또는 프로젝트의 숫자 ID를 포함해야 합니다.
Google Cloud 콘솔에서 일부 NotificationConfig
리소스에 v1 Security Command Center API로 생성되었음을 나타내는 기존 라벨이 있을 수 있습니다. 이러한 NotificationConfig
리소스는 Google Cloud 콘솔, gcloud CLI, v1 Security Command Center API 또는 Security Command Center용 v1 클라이언트 라이브러리를 사용하여 관리할 수 있습니다.
gcloud CLI로 이러한 NotificationConfig
리소스를 관리하려면 gcloud CLI 명령어를 실행할 때 위치를 지정하면 안 됩니다.
원하는 언어 또는 플랫폼을 사용하여 NotificationConfig
를 만들려면 다음 안내를 따르세요.
gcloud
gcloud scc notifications create NOTIFICATION_NAME \ --PARENT=PARENT_ID \ --location=LOCATION --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER"
다음을 바꿉니다.
NOTIFICATION_NAME
: 알림의 이름입니다. 이름은 1~128자(영문 기준) 사이여야 하며 영숫자 문자, 밑줄, 하이픈만 포함해야 합니다.PARENT
: 알림이 적용되는 리소스 계층 구조의 범위입니다(organization
,folder
,project
).PARENT_ID
:organizations/123
,folders/456
또는projects/789
형식으로 지정된 상위 조직, 폴더 또는 프로젝트의 ID입니다.LOCATION
: 데이터 상주가 사용 설정된 경우 Security Command Center 위치입니다. 데이터 상주가 사용 설정되지 않았으면global
값을 사용합니다.NOTIFICATION_DESCRIPTION
: 알림에 대한 설명입니다(1,024자 이내). .PUBSUB_TOPIC
: 알림을 수신할 Pub/Sub 주제입니다. 형식은projects/PROJECT_ID/topics/TOPIC
입니다.FILTER
: Pub/Sub에 전송되는 발견 항목을 선택하기 위해 정의하는 표현식입니다. 예를 들면state=\"ACTIVE\"
입니다.
Terraform
조직의 NotificationConfig
를 만듭니다.
폴더의 NotificationConfig
를 만듭니다.
프로젝트의 NotificationConfig
를 만듭니다.
Go
자바
Node.js
Python
이제 알림이 지정된 Pub/Sub 주제에 게시됩니다.
알림을 게시하려면 service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
형식으로 서비스 계정이 생성됩니다.
이 서비스 계정은 첫 번째 NotificationConfig
를 만들 때 생성되며 알림 구성을 만들 때 PUBSUB_TOPIC에 대한 IAM 정책에 securitycenter.notificationServiceAgent
역할이 자동으로 부여됩니다. 알림이 작동하려면 서비스 계정 역할이 필요합니다.
VPC 서비스 제어에서 경계 액세스 권한 부여
VPC 서비스 제어를 사용하고 Pub/Sub 주제가 서비스 경계 내 프로젝트의 일부인 경우, 알림을 만들려면 프로젝트에 대한 액세스 권한을 부여해야 합니다.
프로젝트에 대한 액세스 권한을 부여하려면 알림을 만드는 데 사용되는 주 구성원 및 프로젝트에 대한 인그레스 및 이그레스 규칙을 만드세요. 이 규칙을 이용하여 보호된 리소스에 대한 액세스를 허용하고 Pub/Sub가 Pub/Sub 주제에 대한 setIamPolicy
권한을 가지고 있는지 확인할 수 있습니다.
NotificationConfig를 만들기 전에
NotificationConfig 만들기 단계를 완료하기 전에 다음 단계를 완료합니다.
콘솔
-
Google Cloud 콘솔에서 VPC 서비스 제어 페이지로 이동합니다.
- 조직 또는 프로젝트를 선택합니다.
- 조직을 선택한 경우 액세스 정책 선택을 클릭한 다음 업데이트하려는 경계와 연결된 액세스 정책을 선택합니다.
-
업데이트할 경계 이름을 클릭합니다.
수정해야 하는 서비스 경계를 찾으려면
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
위반을 표시하는 항목의 로그를 확인하면 됩니다. 해당 항목에서servicePerimeterName
필드를 확인합니다.accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
- 경계 수정을 클릭합니다.
- 이그레스 정책을 클릭합니다.
- 이그레스 규칙 추가를 클릭합니다.
-
FROM 섹션에서 다음 세부정보를 설정합니다.
- ID에서 ID 및 그룹 선택을 선택합니다.
- ID 추가를 클릭합니다.
-
Security Command Center API를 호출하는 데 사용된 주 구성원의 이메일 주소를 입력합니다.
- 주 구성원을 선택하거나 Enter 키를 누른 다음 ID 추가를 클릭합니다.
-
TO 섹션에서 다음 세부정보를 설정합니다.
- 프로젝트에 모든 프로젝트를 선택합니다.
- 작업 또는 IAM 역할에서 작업 선택을 선택합니다.
-
작업 추가를 클릭한 다음 다음 작업을 추가합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 모든 방법을 클릭합니다.
- 모든 메서드 추가를 클릭합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 인그레스 정책을 클릭합니다.
- 인그레스 규칙 추가를 클릭합니다.
-
FROM 섹션에서 다음 세부정보를 설정합니다.
- ID에서 ID 및 그룹 선택을 선택합니다.
- ID 추가를 클릭합니다.
-
Security Command Center API를 호출하는 데 사용된 주 구성원의 이메일 주소를 입력합니다.
- 주 구성원을 선택하거나 Enter 키를 누른 다음 ID 추가를 클릭합니다.
- 소스에서 모든 소스를 선택합니다.
-
TO 섹션에서 다음 세부정보를 설정합니다.
- 프로젝트에서 프로젝트 선택을 선택합니다.
- 프로젝트 추가를 클릭한 후 Pub/Sub 주제가 포함된 프로젝트를 추가합니다.
- 작업 또는 IAM 역할에서 작업 선택을 선택합니다.
-
작업 추가를 클릭한 다음 다음 작업을 추가합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 모든 방법을 클릭합니다.
- 모든 메서드 추가를 클릭합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 저장을 클릭합니다.
gcloud
-
할당량 프로젝트가 아직 설정되지 않은 경우 설정합니다. Access Context Manager API가 사용 설정된 프로젝트를 선택합니다.
gcloud config set billing/quota_project QUOTA_PROJECT_ID
QUOTA_PROJECT_ID
를 결제 및 할당량에 사용할 프로젝트의 ID로 바꿉니다. -
다음 콘텐츠로
egress-rule.yaml
라는 파일을 만듭니다.- egressFrom: identities: - PRINCIPAL_ADDRESS egressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
PRINCIPAL_ADDRESS
를 Security Command Center API를 호출하는 데 사용되는 주 구성원의 주소로 바꿉니다. -
다음 콘텐츠로
ingress-rule.yaml
라는 파일을 만듭니다.- ingressFrom: identities: - PRINCIPAL_ADDRESS sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
PRINCIPAL_ADDRESS
를 Security Command Center API를 호출하는 데 사용되는 주 구성원의 주소로 바꿉니다. -
경계에 이그레스 규칙을 추가합니다.
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-egress-policies=egress-rule.yaml
다음을 바꿉니다.
-
PERIMETER_NAME
: 경계의 이름입니다. 예를 들면accessPolicies/1234567890/servicePerimeters/example_perimeter
입니다.수정해야 하는 서비스 경계를 찾으려면
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
위반을 표시하는 항목의 로그를 확인하면 됩니다. 해당 항목에서servicePerimeterName
필드를 확인합니다.accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
-
경계에 인그레스 규칙을 추가합니다.
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
다음을 바꿉니다.
-
PERIMETER_NAME
: 경계의 이름입니다. 예를 들면accessPolicies/1234567890/servicePerimeters/example_perimeter
입니다.수정해야 하는 서비스 경계를 찾으려면
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
위반을 표시하는 항목의 로그를 확인하면 됩니다. 해당 항목에서servicePerimeterName
필드를 확인합니다.accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
자세한 내용은 인그레스 및 이그레스 규칙을 참고하세요.
NotificationConfig에 대한 인그레스 규칙 만들기
NotificationConfig
의 인그레스 규칙을 만들려면 NotificationConfig 만들기의 안내를 완료한 후 다음 단계를 완료합니다.
콘솔
-
이전 섹션의 서비스 경계를 다시 엽니다.
- 인그레스 정책을 클릭합니다.
- 인그레스 규칙 추가를 클릭합니다.
-
FROM 섹션에서 다음 세부정보를 설정합니다.
- ID에서 ID 및 그룹 선택을 선택합니다.
- ID 추가를 클릭합니다.
-
NotificationConfig
서비스 상담사의 이메일 주소를 입력합니다. 서비스 에이전트 주소의 형식은 다음과 같습니다.service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
ORGANIZATION_ID
를 조직 ID로 바꿉니다. - 서비스 상담사를 선택하거나 ENTER 키를 누른 다음 ID 추가를 클릭합니다.
- 소스에서 모든 소스를 선택합니다.
-
TO 섹션에서 다음 세부정보를 설정합니다.
- 프로젝트에서 프로젝트 선택을 선택합니다.
- 프로젝트 추가를 클릭한 후 Pub/Sub 주제가 포함된 프로젝트를 추가합니다.
- 작업 또는 IAM 역할에서 작업 선택을 선택합니다.
-
작업 추가를 클릭한 다음 다음 작업을 추가합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 모든 방법을 클릭합니다.
- 모든 메서드 추가를 클릭합니다.
- pubsub.googleapis.com 서비스를 추가합니다.
- 저장을 클릭합니다.
gcloud
-
할당량 프로젝트가 아직 설정되지 않은 경우 설정합니다. Access Context Manager API가 사용 설정된 프로젝트를 선택합니다.
gcloud config set billing/quota_project QUOTA_PROJECT_ID
QUOTA_PROJECT_ID
를 결제 및 할당량에 사용할 프로젝트의 ID로 바꿉니다. -
다음 콘텐츠로
ingress-rule.yaml
라는 파일을 만듭니다.- ingressFrom: identities: - serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
ORGANIZATION_ID
를 조직 ID로 바꿉니다. -
경계에 인그레스 규칙을 추가합니다.
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
다음을 바꿉니다.
-
PERIMETER_NAME
: 경계의 이름입니다. 예를 들면accessPolicies/1234567890/servicePerimeters/example_perimeter
입니다.수정해야 하는 서비스 경계를 찾으려면
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
위반을 표시하는 항목의 로그를 확인하면 됩니다. 해당 항목에서servicePerimeterName
필드를 확인합니다.accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
자세한 내용은 인그레스 및 이그레스 규칙을 참고하세요.
이제 선택한 프로젝트, 사용자, 서비스 계정에서 보호된 리소스에 액세스하고 알림을 만들 수 있습니다.
이 가이드의 모든 단계를 수행했고 알림이 올바르게 작동하면 이제 다음을 삭제할 수 있습니다.
- 주 구성원의 인그레스 규칙
- 주 구성원의 이그레스 규칙
이러한 규칙은 NotificationConfig
만 구성해야 했습니다. 하지만 알림이 계속 작동하게 하려면 NotificationConfig
에 대한 인그레스 규칙을 유지해야 합니다. 이렇게 하면 서비스 경계 뒤에 있는 Pub/Sub 주제에 알림을 게시할 수 있습니다.
다음 단계
- 실시간 이메일 및 채팅 알림 사용 설정 알아보기
- 알림 API 관리 방법 알아보기
- 알림 필터링 자세히 알아보기