Security Command Center와 Google SecOps 통합
통합 버전: 14.0
이 문서에서는 Security Command Center를 Google Security Operations와 통합하는 방법을 설명합니다.
시작하기 전에
Security Command Center를 통합하려면 다음 단계를 완료해야 합니다.
다음 옵션 중 하나를 사용하여 인증을 구성합니다.
워크로드 아이덴티티 (권장)
IAM 역할 만들기 및 구성
통합을 위한 커스텀 IAM 역할을 만들고 구성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM 역할 페이지로 이동합니다.
역할 만들기를 클릭하여 통합에 필요한 권한이 있는 커스텀 역할을 만듭니다.
제목, 설명, 고유 ID를 입력합니다.
역할 출시 단계를
General Availability로 설정합니다.생성된 역할에 다음 권한을 추가합니다.
securitycenter.assets.listsecuritycenter.findings.listsecuritycenter.findings.setMutesecuritycenter.findings.setState
만들기를 클릭합니다.
인증 구성
통합을 인증하려면 JSON 키 또는 워크로드 아이덴티티가 있는 서비스 계정을 사용하세요.
JSON 키를 사용한 인증
이 메서드는 정적 JSON 키 파일을 사용하여 서비스 계정을 인증합니다.
서비스 계정 만들기
JSON 키를 사용하여 인증하려면 먼저 서비스 계정을 만들어야 합니다.
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
서비스 계정을 만들 프로젝트를 선택합니다.
서비스 계정 만들기를 클릭합니다.
기존 서비스 계정을 사용하려면 사용할 서비스 계정을 선택하고 JSON 키를 생성합니다.
이름과 설명을 입력하고 만들고 계속하기를 클릭합니다.
이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 단계에서 생성한 맞춤 역할을 추가합니다.
완료를 클릭하여 계정 만들기를 마칩니다.
JSON 키 생성
필요한 JSON 키 파일을 생성하려면 다음 단계를 완료하세요.
서비스 계정 목록에서 만든 (또는 선택한) 서비스 계정의 이메일 주소를 선택하여 세부정보를 엽니다.
키 탭을 클릭합니다.
키 추가 > 새 키 만들기를 클릭합니다.
키 유형으로 JSON을 선택하고 만들기를 클릭합니다.
JSON 키 파일이 컴퓨터에 다운로드됩니다. 이 파일을 안전하게 저장하고 통합 매개변수를 구성할 때 이 파일의 전체 콘텐츠를
User's Service Account에 붙여넣습니다.
워크로드 아이덴티티를 사용한 인증 (권장)
이 방법을 사용하면 통합에서 장기 보안 비밀을 처리하지 않고도 서비스 계정을 가장할 수 있습니다.
워크로드 아이덴티티를 구성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
기존 서비스 계정을 선택하거나 새 계정을 만듭니다.
만든 커스텀 역할을 서비스 계정에 부여합니다.
서비스 계정에 서비스 사용량 소비자 역할을 부여합니다. 이 권한은 API 사용을
Quota Project ID에 정의된 프로젝트와 연결하는 데 필요합니다.서비스 계정에 서비스 계정 토큰 생성자 역할을 부여합니다.
이 권한을 통해 통합에서 인증에 필요한 단기 사용자 인증 정보를 생성할 수 있습니다.
서비스 계정의 클라이언트 이메일을 기록하고 통합 매개변수를 구성할 때 워크로드 아이덴티티 이메일에 이 값을 사용합니다.
통합 매개변수
Security Command Center 통합에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
API Root |
필수 항목입니다. Security Command Center 인스턴스의 API 루트입니다. |
Organization ID |
선택사항입니다. Security Command Center 통합 쿼리의 범위를 지정하는 데 사용할 Google Cloud 조직의 ID입니다. |
Project ID |
선택사항입니다. Security Command Center 인스턴스 쿼리의 범위를 지정하는 데 사용되는 Google Cloud 프로젝트 ID입니다. |
Quota Project ID |
선택사항입니다. API 사용 및 결제 목적으로 사용되는 Google Cloud 프로젝트 ID입니다. |
User's Service Account |
선택사항입니다. 서비스 계정 키 JSON 파일의 전체 콘텐츠입니다. JSON 키를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요. |
Workload Identity Email |
선택사항입니다. 서비스 계정의 클라이언트 이메일 주소입니다. 워크로드 아이덴티티를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요. 이 파라미터를 구성하는 경우 |
Verify SSL |
필수 항목입니다. 선택하면 Security Command Center 서버에 연결할 때 통합에서 SSL 인증서를 검증합니다. 기본적으로 사용 설정됩니다. |
Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.
필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.
작업
작업에 대한 자세한 내용은 내 Workdesk에서 대기 중인 작업에 응답하기 및 수동 작업 실행하기를 참고하세요.
발견 항목 세부정보 가져오기
발견 항목 세부정보 가져오기 작업을 사용하여 Security Command Center의 발견 항목에 관한 세부정보를 가져옵니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
발견 항목 세부정보 가져오기 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Finding Name |
필수 항목입니다. 세부정보를 반환할 발견 사항의 전체 리소스 이름입니다( 이 매개변수는 여러 값을 쉼표로 구분된 목록으로 허용합니다. |
작업 출력
발견 항목 세부정보 가져오기 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 가능 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
케이스 월 테이블
발견 항목 세부정보 가져오기 작업은 다음 표를 반환할 수 있습니다.
표 제목: 발견 항목 세부정보
표 열:
- 카테고리
- 상태
- 심각도
- 유형
JSON 결과
다음 예는 Get Finding Details(발견 세부정보 가져오기) 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
{
{
"finding_name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/2678067631293752869/findings/hvX6WwbvFyBGqPbEs9WH9m",
"parent": "organizations/ORGANIZATION_ID/sources/2678067631293752869",
"resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"state": "ACTIVE",
"category": "Discovery: Service Account Self-Investigation",
"sourceProperties": {
"sourceId": {
"projectNumber": "PROJECT_ID",
"customerOrganizationNumber": "ORGANIZATION_ID"
},
"detectionCategory": {
"technique": "discovery",
"indicator": "audit_log",
"ruleName": "iam_anomalous_behavior",
"subRuleName": "service_account_gets_own_iam_policy"
},
"detectionPriority": "LOW",
"affectedResources": [
{
"gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID"
}
],
"evidence": [
{
"sourceLogId": {
"projectId": "PROJECT_ID",
"resourceContainer": "projects/PROJECT_ID",
"timestamp": {
"seconds": "1622678907",
"nanos": 448368000
},
"insertId": "ID"
}
}
],
"properties": {
"serviceAccountGetsOwnIamPolicy": {
"principalEmail": "prisma-cloud-serv@PROJECT_ID.iam.gserviceaccount.com",
"projectId": "PROJECT_ID",
"callerIp": "192.0.2.41",
"callerUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)",
"rawUserAgent": "Redlock/GC-MDC/resource-manager/PROJECT_ID Google-API-Java-Client HTTP-Java-Client/1.34.0 (gzip),gzip(gfe)"
}
},
"contextUris": {
"mitreUri": {
"displayName": "Permission Groups Discovery: Cloud Groups",
"url": "https://attack.mitre.org/techniques/ID/003/"
},
"cloudLoggingQueryUri": [
{
"displayName": "Cloud Logging Query Link",
"url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222021-06-03T00:08:27.448368Z%22%0AinsertId%3D%22ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
}
]
}
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
},
"eventTime": "2021-06-03T00:08:27.448Z",
"createTime": "2021-06-03T00:08:31.074Z",
"severity": "LOW",
"canonicalName": "projects/PROJECT_ID/sources/SOURCE_ID/findings/FINDING_ID",
"mute": "UNDEFINED",
"findingClass": "THREAT",
"mitreAttack": {
"primaryTactic": "DISCOVERY",
"primaryTechniques": [
"PERMISSION_GROUPS_DISCOVERY",
"CLOUD_GROUPS"
]
}
},
"resource": {
"name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"projectDisplayName": "PROJECT_ID",
"parentName": "//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID",
"parentDisplayName": "example.net",
"type": "google.cloud.resourcemanager.Project",
"displayName": "PROJECT_ID"
}
}
}
출력 메시지
Get Finding Details 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Error executing action "Get Finding Details". Reason: ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 발견 세부정보 가져오기 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
애셋 취약점 나열
애셋 취약점 목록 작업을 사용하여 Security Command Center의 항목과 관련된 취약점을 나열합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
애셋 취약점 목록 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Asset Resource Names |
필수 항목입니다. 데이터를 가져올 애셋의 고유 식별자 (전체 리소스 이름)를 쉼표로 구분한 목록입니다. |
Timeframe |
선택사항입니다. 취약점 또는 잘못된 구성을 검색할 기간입니다. 가능한 값은 다음과 같습니다.
기본값은 |
Record Types |
선택사항입니다. 반환할 레코드 유형입니다. 가능한 값은 다음과 같습니다.
기본값은 |
Output Type |
선택사항입니다. 모든 애셋의 JSON 결과에 반환할 출력 유형입니다. 가능한 값은 다음과 같습니다.
기본값은 |
Max Records To Return |
선택사항입니다. 레코드 유형별로 반환할 최대 레코드 수입니다. 기본값은 |
작업 출력
애셋 취약점 나열 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 가능 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
케이스 월 테이블
애셋 취약점 나열 작업은 다음 표를 반환할 수 있습니다.
표 제목: ASSET_ID 취약점
표 열:
- 카테고리
- 설명
- 심각도
- 이벤트 시간
- CVE
표 제목: ASSET_ID 잘못된 구성
표 열:
- 카테고리
- 설명
- 심각도
- 이벤트 시간
- 권장사항
JSON 결과
다음 예시에서는 애셋 취약점 목록 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
{
."siemplify_asset_display_name":[1] [2] ""
"vulnerabilities": {
"statistics": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"undefined": 1
},
"data": [
{
"category": "CATEGORY"
"description": "DESCRIPTION"
"cve_id": "CVE_ID"
"event_time": "EVENT_TIME"
"related_references": "RELATED_REFERENCES"
"severity": "SEVERITY"
}
]
},
"misconfigurations": {
"statistics": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"undefined": 1
},
"data": [
{
"category": "CATEGORY"
"description": "DESCRIPTION"
"recommendation": "RECOMMENDATION"
"event_time": "EVENT_TIME"
"severity": "SEVERITY"
}
]
},
}
출력 메시지
애셋 취약점 나열 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Error executing action "List Asset Vulnerabilities". Reason:
ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 List Asset Vulnerabilities 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
핑
Ping 작업을 사용하여 Security Command Center와의 연결을 테스트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
없음
작업 출력
Ping 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
출력 메시지
Ping 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
Successfully connected to the Security Command Center server
with the provided connection parameters! |
작업이 완료되었습니다. |
Failed to connect to the Security Command Center server! Error
is ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 Ping 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
발견 항목 업데이트
발견 항목 업데이트 작업을 사용하여 Security Command Center의 기존 발견 항목을 업데이트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
Update Finding 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Finding Name |
필수 항목입니다. 세부정보를 반환할 발견 사항의 전체 리소스 이름입니다( 이 매개변수는 여러 값을 쉼표로 구분된 목록으로 허용합니다. |
Mute Status |
선택사항입니다. 발견 항목의 숨기기 상태입니다. 가능한 값은 다음과 같습니다.
|
State Status |
선택사항입니다. 발견 항목의 상태입니다. 가능한 값은 다음과 같습니다.
|
작업 출력
결과 업데이트 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
출력 메시지
발견 항목 업데이트 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Error executing action "Update Finding". Reason: ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 결과 업데이트 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
커넥터
Google SecOps에서 커넥터를 구성하는 방법에 대한 자세한 내용은 데이터 수집 (커넥터)을 참고하세요.
Security Command Center - 발견 항목 커넥터
Security Command Center - 발견 항목 커넥터를 사용하여 Security Command Center에서 발견 항목에 관한 정보를 가져옵니다.
이 커넥터는 동적 목록을 사용하여 카테고리별로 발견 항목을 필터링하는 기능을 지원합니다.
커넥터 입력
Security Command Center - 발견 항목 커넥터에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Product Field Name |
필수 항목입니다. 제품 이름이 저장된 필드의 이름입니다. 제품 이름은 주로 매핑에 영향을 미칩니다. 커넥터의 매핑 프로세스를 간소화하고 개선하기 위해 기본값은 코드에서 참조되는 대체 값으로 확인됩니다. 이 매개변수의 잘못된 입력은 기본적으로 대체 값으로 처리됩니다. 기본값은 |
Event Field Name |
필수 항목입니다. 이벤트 이름 (하위 유형)을 결정하는 필드의 이름입니다. |
Environment Field Name |
선택사항입니다. 환경 이름이 저장된 필드의 이름입니다. 환경 필드가 누락된 경우 커넥터는 기본값을 사용합니다. 기본값은 |
Environment Regex Pattern |
선택사항입니다.
기본값 정규 표현식 패턴이 null이거나 비어 있거나 환경 값이 null인 경우 최종 환경 결과는 기본 환경입니다. |
PythonProcessTime |
필수 항목입니다. 현재 스크립트를 실행하는 Python 프로세스의 제한 시간 한도(초)입니다. 기본값은 |
API Root |
필수 항목입니다. Security Command Center 인스턴스의 API 루트입니다. |
Organization ID |
선택사항입니다. 사용할 Google Cloud 조직의 ID |
Project ID |
선택사항입니다. 사용할 Google Cloud 프로젝트 ID입니다. |
Quota Project ID |
선택사항입니다. 사용할 Google Cloud 프로젝트 ID입니다. |
User's Service Account |
필수 항목입니다. 서비스 계정 키 JSON 파일의 전체 콘텐츠입니다. JSON 키를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요. |
Workload Identity Email |
선택사항입니다. 서비스 계정의 클라이언트 이메일 주소입니다. 워크로드 아이덴티티를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요. 이 파라미터를 구성하는 경우 |
Finding Class Filter |
선택사항입니다. 소스에서 데이터를 수집할 때 포함할 보안 발견 유형의 쉼표로 구분된 목록입니다. 가능한 값은 다음과 같습니다.
값을 제공하지 않으면 모든 클래스의 발견 항목이 수집됩니다. |
Lowest Severity To Fetch |
선택사항입니다. 가져올 알림의 가장 낮은 심각도입니다. 이 매개변수를 구성하지 않으면 커넥터가 모든 심각도 수준의 알림을 수집합니다. 가능한 값은 다음과 같습니다.
정의되지 않은 심각도의 발견 항목에 값을 제공하지 않으면 모든 심각도 유형이 수집됩니다. |
Fallback Severity |
선택사항입니다. 소스에서 정의되거나 인식 가능한 심각도 등급이 없는 수집된 보안 발견 사항에 할당할 심각도 수준입니다. 가능한 값은 다음과 같습니다.
기본값은 |
Max Hours Backwards |
선택사항입니다. 현재로부터 몇 시간 전의 발견 항목을 가져올지 나타냅니다. 이 매개변수는 커넥터를 처음 사용 설정한 후의 초기 커넥터 반복 또는 만료된 커넥터 타임스탬프의 대체 값에 적용될 수 있습니다. 최댓값은 기본값은 |
Max Findings To Fetch |
선택사항입니다. 모든 커넥터 반복에서 처리할 발견 항목 수입니다. 최댓값은 기본값은 |
Use dynamic list as a blacklist |
필수 항목입니다. 선택하면 커넥터가 동적 목록을 차단 목록으로 사용합니다. 기본적으로 사용 중지됩니다. |
Verify SSL |
필수 항목입니다. 선택하면 Security Command Center 서버에 연결할 때 통합에서 SSL 인증서를 검증합니다. 기본적으로 사용 중지됩니다. |
Proxy Server Address |
선택사항입니다. 사용할 프록시 서버의 주소입니다. |
Proxy Username |
선택사항입니다. 인증할 프록시 사용자 이름입니다. |
Proxy Password |
선택사항입니다. 인증할 프록시 비밀번호입니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.