資產是機構的 Google Cloud 資源,例如 Compute Engine 執行個體或 Cloud Storage 值區。
本指南說明如何使用 Security Command Center 用戶端程式庫,存取 Security Command Center 為專案或組織中的資產維護的已淘汰記錄。
Security Command Center 只會記錄 Cloud 資產清單中的部分資產。如要取得環境中最完整的資產清單,請使用 Cloud Asset Inventory 列出資產。
如要瞭解詳情,請參考下列資源:
IAM 角色的授予層級
您可以在機構、資料夾或專案層級授予 Security Command Center 的 IAM 角色。您能否查看、編輯、建立或更新發現項目、資產和安全性來源,取決於您獲准的存取層級。如要進一步瞭解 Security Command Center 角色,請參閱存取權控管。
事前準備
設定來源前,請先完成下列步驟:
頁面大小
所有 Security Command Center 清單 API 都會分頁。每個回應都會傳回一頁結果和一個符記,用來傳回下一頁。頁面大小可設定。 預設的 pageSize 為 10,可設為最小值 1 和最大值 1000。
資源類型
Security Command Center 中的 resourceType
屬性使用的命名慣例與 Cloud Asset Inventory 不同。如需資源類型格式清單,請參閱「Security Command Center 支援的資產類型」。
列出所有資產
以下範例說明如何列出所有資產:
gcloud
如要列出專案、資料夾或機構中的所有資產,請執行下列指令:
gcloud scc assets list PARENT_ID
將 PARENT_ID
替換為下列任一值:
- 機構 ID,格式如下:
ORGANIZATION_ID
(僅限數值 ID) - 資料夾 ID,格式如下:
folders/FOLDER_ID
- 專案 ID,格式如下:
projects/PROJECT_ID
如需更多範例,請執行:
gcloud scc assets list --help
如需說明文件中的範例,請參閱 gcloud scc assets list。
Python
Java
Go
Node.js
每個資產的輸出內容都是類似下列內容的 JSON 物件:
asset:
createTime: '2020-10-05T17:55:14.823Z'
iamPolicy:
policyBlob: '{"bindings":[{"role":"roles/owner","members":["serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com","user:USER_EMAIL@gmail.com"]}]}'
name: organizations/ORGANIZATION_ID/assets/ASSET_ID
resourceProperties:
createTime: '2020-10-05T17:36:17.915Z'
lifecycleState: ACTIVE
name: PROJECT_ID
parent: '{"id":"ORGANIZATION_ID","type":"organization"}'
projectId: PROJECT_ID
projectNumber: 'PROJECT_NUMBER'
securityCenterProperties:
resourceDisplayName: PROJECT_ID
resourceName: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceOwners:
- serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
- user:USER_EMAIL@gmail.com
resourceParent: //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID
resourceParentDisplayName: ORGANIZATION_NAME
resourceProject: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceProjectDisplayName: PROJECT_ID
resourceType: google.cloud.resourcemanager.Project
securityMarks:
name: organizations/ORGANIZATION_ID/assets/ASSET_ID/securityMarks
updateTime: '2020-10-05T17:55:14.823Z'
篩選資產
專案、資料夾或機構可能包含許多資產。前例未使用任何篩選器,因此會傳回所有資產。您可以使用資產篩選器,在 Security Command Center 中取得特定資產的相關資訊。篩選器類似於 SQL 陳述式中的「where」子句,但不是套用至資料欄,而是套用至 API 傳回的物件。
上例中的範例輸出內容顯示一些可用於資產篩選器的欄位和子欄位,以及這些欄位和子欄位的屬性。Security Command Center 支援完整的 JSON 陣列和物件,做為潛在的屬性類型。你可以依下列條件篩選:
- 陣列元素
- 在物件中部分比對字串的完整 JSON 物件
- JSON 物件子欄位
子欄位必須是數字、字串或布林值,且篩選器運算式必須使用下列比較運算子:
- 字串:
- 完全平等
=
- 部分字串比對
:
- 完全平等
- 數字:
- 不等式
<
、>
、<=
、>=
- 平等
=
- 不等式
- 布林值:
- 平等
=
- 平等
下列範例會篩選資產:
gcloud
使用下列指令篩選資產:
gcloud scc assets list PARENT_ID --filter="FILTER"
更改下列內容:
FILTER
改成你要使用的篩選器。舉例來說,下列篩選器只會傳回專案資源:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_ID
,值為下列其中之一:- 機構 ID,格式如下:
ORGANIZATION_ID
(僅限數值 ID) - 資料夾 ID,格式如下:
folders/FOLDER_ID
- 專案 ID,格式如下:
projects/PROJECT_ID
- 機構 ID,格式如下:
如需更多範例,請執行:
gcloud scc assets list --help
如需說明文件中的範例,請參閱 gcloud scc assets list。
Python
Java
Go
Node.js
列出特定時間點的清單
先前的範例說明如何列出目前的資產集。您也可以透過 Security Command Center 查看資產的歷來快照。下列範例會傳回特定時間點所有資產的狀態。Security Command Center 支援毫秒時間解析度。
gcloud
使用下列指令列出特定時間點的資產:
gcloud scc assets list PARENT_ID --read-time="READ_TIME"
更改下列內容:
READ_TIME
,其中包含要列出資產的時間。 請使用下列格式:YYYY-MM-DDThh:mm:ss.ffffffZ
。例如:--read-time="2022-12-21T07:00:06.861Z"
PARENT_ID
,值為下列其中之一:- 機構 ID,格式如下:
ORGANIZATION_ID
(僅限數值 ID) - 專案 ID,格式如下:
projects/PROJECT_ID
- 資料夾 ID,格式如下:
folders/FOLDER_ID
- 機構 ID,格式如下:
如需更多範例,請執行:
gcloud scc assets list --help
如需說明文件中的範例,請參閱 gcloud scc assets list。
Python
Java
Go
Node.js
列出含有狀態變更的資產
Security Command Center 可讓您比較資產在兩個時間點的狀態,找出資產是否在指定時間範圍內新增、移除或存在。以下範例會比較 READ_TIME
存在的專案與 COMPARE_DURATION
指定的先前時間點。COMPARE_DURATION
會在幾秒內提供。
設定 COMPARE_DURATION
後,清單素材資源結果的 stateChange
屬性會更新為下列其中一個值:
ADDED
:資產在compareDuration
開始時不存在,但在readTime
時存在。REMOVED
:資產在compareDuration
開始時存在,但readTime
時不存在。ACTIVE
:資產在compareDuration
和readTime
定義的時間範圍內,於開始和結束時都存在。
gcloud
使用下列指令比較兩個時間點的資產狀態:
gcloud scc assets list PARENT_ID \ --filter="FILTER" \ --read-time=READ_TIME \ --compare-duration=COMPARE_DURATION
更改下列內容:
COMPARE_DURATION
,其中包含秒數,可定義--read-time
旗標指定時間之前的時間點。例如:--compare-duration=84600s
FILTER
改成你要使用的篩選器。舉例來說,下列篩選器只會傳回專案資源:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_ID
,值為下列其中之一:- 機構 ID,格式如下:
ORGANIZATION_ID
(僅限數值 ID) - 專案 ID,格式如下:
projects/PROJECT_ID
- 資料夾 ID,格式如下:
folders/FOLDER_ID
- 機構 ID,格式如下:
READ_TIME
,並指定列出資產的時間。請使用下列格式:YYYY-MM-DDThh:mm:ss.ffffffZ
。例如: 如需更多範例,請執行:--read-time="2022-12-21T07:00:06.861Z"
gcloud scc assets list --help
如需說明文件中的範例,請參閱 gcloud scc assets list。
Python
Java
Go
Node.js
篩選器範例
以下列出其他實用的素材資源篩選器。您可以在篩選器中使用 AND
和 OR
組合參數,擴大或縮小結果範圍。
尋找特定擁有者的專案資產
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND security_center_properties.resource_owners : \"$USER\""
$USER
通常採用 user:someone@domain.com
格式。user
的比較會使用子字串運算子 :
,不一定要完全相符。
開放 HTTP 通訊埠的防火牆規則
"security_center_properties.resource_type = \"google.compute.Firewall\" AND resource_properties.name =\"default-allow-http\""
屬於特定專案的資源
"security_center_properties.resource_parent = \"$PROJECT_1_NAME\" OR security_center_properties.resource_parent = \"$PROJECT_2_NAME\""
$PROJECT_1_NAME
和 $PROJECT_2_NAME
是 //cloudresourcemanager.googleapis.com/projects/$PROJECT_ID
形式的資源 ID,其中 $PROJECT_ID
是專案編號。完整範例如下://cloudresourcemanager.googleapis.com/projects/100090906
尋找名稱包含特定字串的 Compute Engine 映像檔
這個篩選器會傳回含有子字串「Debia」的 Compute Engine 映像檔:
"security_center_properties.resource_type = \"google.compute.Image\" AND resource_properties.name : \"Debia\""
屬性包含鍵/值組合的資源
這個篩選器會傳回已停用「bucketPolicyOnly
」的 Cloud Storage 值區。resourceProperties.iamConfiguration
的值會編碼為字串。您可以使用 \
字元逸出字串中的特殊字元,包括鍵名和值之間的 :
運算子。
"resourceProperties.iamConfiguration:"\"bucketPolicyOnly\"\:{\"enabled\"\:false""
尋找在特定時間建立或之前建立的專案資產
這些範例篩選器會比對 2019 年 7 月 18 日 GMT 下午 8 點 26 分 21 秒當天或之前建立的資產。使用 create_time
篩選器時,可以採用下列格式和類型表示時間:
以整數常值表示的 Unix 時間 (以毫秒為單位)
"create_time <= 1563481581000"
RFC 3339 (字串常值)
"create_time <= \"2019-07-18T20:26:21+00:00\""
從結果中排除資產
如要從結果中排除素材資源,請在參數前面加上 -
字元,使用否定運算子。這項作業類似於在 SQL 陳述式中使用 NOT 運算子。
這個篩選器會傳回所有專案資源,但 Debia
除外:
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND -resource_properties.projectId = \"Debia\""
後續步驟
進一步瞭解如何使用用戶端程式庫存取 Security Command Center。