이 페이지에서는 Security Command Center API 알림을 사용 설정하는 방법을 설명합니다.
알림은 몇 분 내로 Pub/Sub 주제에 발견 항목과 발견 항목 업데이트를 전송합니다. Security Command Center API 알림에는 Google Cloud 콘솔에서 Security Command Center에 표시되는 모든 발견 항목 정보가 포함됩니다.
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/{name=organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01}
마찬가지로 gcloud CLI를 사용하여 지속적 내보내기를 가져오려면 구성의 전체 리소스 이름 또는 --locations
플래그를 사용하여 위치를 지정해야 합니다. 예를 들면 다음과 같습니다.
gcloud scc notifications describe myContinuousExport organizations/123 \ --location=locations/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를 포함해야 합니다.
원하는 언어 또는 플랫폼을 사용하여 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 위치를 지정합니다. 결과notificationConfig
리소스는 이 위치에만 저장됩니다. 이 위치에서 발급된 발견 항목만 Pub/Sub로 전송됩니다.
데이터 상주가 사용 설정되지 않은 경우 --location
플래그를 지정하면 Security Command Center API v2를 사용하여 알림이 생성되고 플래그에 대한 유효한 유일한 값은 global
입니다.
NOTIFICATION_DESCRIPTION
: 알림에 대한 설명입니다(1,024자 이내).
.
PUBSUB_TOPIC
: 알림을 수신할 Pub/Sub 주제입니다. 형식은 projects/PROJECT_ID/topics/TOPIC
입니다.
FILTER
: Pub/Sub에 전송되는 발견 항목을 선택하기 위해 정의하는 표현식입니다. 예를 들면 state=\"ACTIVE\"
입니다.
Python
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
자바
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
Go
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
Node.js
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
PHP
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
Ruby
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
C#
다음 샘플은 v1 API를 사용합니다. v2의 샘플을 수정하려면 v1
을 v2
로 바꾸고 /locations/LOCATION
을 리소스 이름에 추가합니다.
대부분의 리소스의 경우 /PARENT/PARENT_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 PARENT
는 organizations
, folders
또는 projects
입니다.
발견 항목의 경우 /sources/SOURCE_ID
뒤에 /locations/LOCATION
을 리소스 이름에 추가합니다. 여기서 SOURCE_ID
는 발견 항목을 실행한 Security Command Center 서비스의 ID입니다.
이제 알림이 지정된 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
).경계 수정을 클릭합니다.
탐색 메뉴에서 인그레스 정책을 클릭합니다.
사용자 또는 서비스 계정에 대한 인그레스 규칙을 구성하려면 다음 매개변수를 사용합니다.
- API 클라이언트의 FROM 속성:
- 소스 드롭다운 메뉴에서 모든 소스를 선택합니다.
- ID 드롭다운 메뉴에서 선택한 ID를 선택합니다.
- 선택을 클릭한 후 Security Command Center API를 호출하는 데 사용되는 주 구성원을 입력합니다.
- Google Cloud 서비스/리소스의 TO 속성:
- 프로젝트 드롭다운 메뉴에서 선택한 프로젝트를 선택합니다.
- 선택을 클릭한 후 Pub/Sub 주제가 포함된 프로젝트를 입력합니다.
- 서비스 드롭다운 메뉴에서 선택한 서비스를 선택한 후 Cloud Pub/Sub API를 선택합니다.
- 메서드 드롭다운 메뉴에서 모든 작업을 선택합니다.
- API 클라이언트의 FROM 속성:
저장을 클릭합니다.
탐색 메뉴에서 이그레스 정책을 클릭합니다.
'규칙 추가'를 클릭합니다.
사용자나 서비스 계정에 대한 이그레스 규칙을 구성하려면 다음 매개변수를 입력합니다.
- API 클라이언트의 FROM 속성:
- ID 드롭다운 메뉴에서 선택한 ID를 선택합니다.
- 선택을 클릭한 후 Security Command Center API를 호출하는 데 사용되는 주 구성원을 입력합니다.
- Google Cloud 서비스/리소스의 To 속성:
- 프로젝트 드롭다운 메뉴에서 모든 프로젝트를 선택합니다.
- 서비스 드롭다운 메뉴에서 선택한 서비스를 선택한 후 Cloud Pub/Sub API를 선택합니다.
- 메서드 드롭다운 메뉴에서 모든 작업을 선택합니다.
- API 클라이언트의 FROM 속성:
저장을 클릭합니다.
NotificationConfig에 대한 인그레스 규칙 만들기
NotificationConfig
에 대한 인그레스 규칙을 만들려면 다음을 수행합니다.
- NotificationConfig 만들기의 안내를 완료합니다.
- 이전 섹션의 서비스 경계를 다시 엽니다.
- 인그레스 정책을 클릭합니다.
- '규칙 추가'를 클릭합니다.
- 만든
NotificationConfig
서비스 계정에 대한 인그레스 규칙을 구성하려면 다음 매개변수를 입력합니다.- API 클라이언트의 FROM 속성:
- 소스 드롭다운 메뉴에서 모든 소스를 선택합니다.
- ID 드롭다운 메뉴에서 선택한 ID를 선택합니다.
- 선택을 클릭하고
NotificationConfig
서비스 계정 이름을 입력합니다.service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
- GCP 서비스/리소스의 TO 속성:
- 프로젝트 드롭다운 메뉴에서 선택한 프로젝트를 선택합니다.
- 선택을 클릭한 후 Pub/Sub 주제가 포함된 프로젝트를 선택합니다.
- 서비스 드롭다운 메뉴에서 선택한 서비스를 선택한 후 Cloud Pub/Sub API를 선택합니다.
- 메서드 드롭다운 메뉴에서 모든 작업을 선택합니다.
- API 클라이언트의 FROM 속성:
- 탐색 메뉴에서 저장을 클릭합니다.
이제 선택한 프로젝트, 사용자, 서비스 계정에서 보호된 리소스에 액세스하고 알림을 만들 수 있습니다.
이 가이드의 모든 단계를 수행했고 알림이 올바르게 작동하면 이제 다음을 삭제할 수 있습니다.
- 주 구성원의 인그레스 규칙
- 주 구성원의 이그레스 규칙
이러한 규칙은 NotificationConfig
만 구성해야 했습니다. 하지만 알림이 계속 작동하게 하려면 NotificationConfig
에 대한 인그레스 규칙을 유지해야 합니다. 이렇게 하면 서비스 경계 뒤에 있는 Pub/Sub 주제에 알림을 게시할 수 있습니다.
다음 단계
- 실시간 이메일 및 채팅 알림 사용 설정 알아보기
- 알림 API 관리 방법 알아보기
- 알림 필터링 자세히 알아보기