將 AWS Identity and Access Management (IAM) 與 Google SecOps 整合
本文說明如何將 AWS Identity and Access Management 與 Google Security Operations 整合。
應用實例
AWS IAM 整合功能運用 Google SecOps 功能,支援下列用途:
遭入侵使用者圍堵:在事件應變工作流程中套用內嵌拒絕政策,自動撤銷疑似遭入侵 IAM 使用者的存取權。
撤銷存取權和調整權限:偵測到異常行為時,將使用者從機密 IAM 群組中移除,立即限制重要 AWS 資源的存取權。
政策和群組管理:自動建立及附加代管 IAM 政策和群組,強制執行最小權限存取控管。
身分稽核和安全防護機制探索:擷取使用者、群組和代管政策清單,強化安全性警示,並稽核 AWS 環境中的 IAM 設定。
自動化身分佈建:建立 IAM 使用者,並指派給預先定義的功能群組,做為自動化新手上路或圍堵修復工作的一部分。
事前準備
在 Google SecOps 中設定 AWS IAM 整合之前,請確認網路環境和 AWS 憑證符合所有作業必要條件。
如要準備整合環境,請務必完成下列步驟:
確認 Google SecOps 與 AWS IAM 全球服務端點 (
iam.amazonaws.com) 之間的網路連線。取得 AWS 程式輔助 API 憑證 (存取金鑰 ID 和私密存取金鑰),並具備適當的 IAM 權限。
在 Google SecOps 中設定及測試整合執行個體。
網路需求
Google SecOps 會使用 HTTPS REST API 和 AWS Python SDK (boto3),直接與 AWS IAM 服務端點通訊。
請確認網路環境符合下列連線規則:
傳出 HTTPS 存取權:啟用從 Google SecOps 執行個體或遠端代理程式,透過通訊埠
443/TCP傳出至 AWS IAM 全域端點 (iam.amazonaws.com) 的 HTTPS 通訊。如要進一步瞭解 AWS 端點,請參閱 AWS 說明文件中的「AWS 服務端點」。
Proxy 設定:如果貴組織透過 HTTP/HTTPS Proxy 轉送傳出流量,請在 Google SecOps 伺服器或遠端代理主機上,設定標準環境 Proxy 變數 (
HTTP_PROXY、HTTPS_PROXY、NO_PROXY)。
驗證和憑證
AWS IAM 整合功能需要程式輔助 API 憑證,才能使用 AWS 第 4 版簽署程序驗證要求。
請確認 AWS 環境符合下列驗證規定:
程式輔助憑證:取得與 AWS IAM 使用者或角色相關聯的有效 AWS 存取金鑰 ID 和 AWS 密鑰。
如要瞭解如何建立 IAM 身分及產生憑證,請參閱 AWS 說明文件中的「管理 IAM 使用者的存取金鑰」和「IAM 身分」。
最小權限:僅授予自動化工作流程所需的權限,並定期輪替憑證。
如要進一步瞭解安全性建議,請參閱 AWS 說明文件中的「IAM 安全性最佳做法」。
設定動作權限
將 Google SecOps 執行動作所需的特定權限,授予驗證 AWS IAM 身分。
請參閱下表,瞭解 AWS IAM 動作的最低權限:
| 動作名稱 | 必要的 AWS IAM 權限 (ActionName:Permission) |
必要權限 | 說明/資源範圍 |
|---|---|---|---|
| 將使用者加入群組 | iam:AddUserToGroup |
iam:GetAccountSummary |
將 IAM 使用者新增至 IAM 群組。Resource:目標 IAM 群組 ARN。 |
| 附加政策 | iam:AttachUserPolicyiam:AttachGroupPolicyiam:AttachRolePolicy |
iam:ListPolicies |
將代管政策附加至 IAM 使用者、群組或角色。需要 iam:ListPolicies 才能依名稱查詢政策 ARN。 |
| 建立群組 | iam:CreateGroup |
iam:GetAccountSummary |
建立新的 IAM 群組。Resource:目標 IAM 群組 ARN。 |
| 建立政策 | iam:CreatePolicy |
iam:GetAccountSummary |
建立新的客戶自行管理的政策。Resource:目標 IAM 政策 ARN。 |
| 建立使用者 | iam:CreateUser |
iam:GetAccountSummary |
建立新的 IAM 使用者。Resource:目標 IAM 使用者 ARN。 |
| 停用使用者存取權 | iam:PutUserPolicy |
— | 附加內嵌拒絕政策 (DisableUserAccessPolicy),撤銷使用者存取權。Resource:目標 IAM 使用者 ARN。 |
| 列出群組 | iam:ListGroups |
iam:GetAccountSummary |
列出帳戶中的 IAM 群組。資源:*。 |
| 列出政策 | iam:ListPolicies |
iam:GetAccountSummary |
列出帳戶中的代管政策。資源:*。 |
| 列出使用者 | iam:ListUsers |
iam:GetAccountSummary |
列出帳戶中的 IAM 使用者。資源:*。 |
| Ping | iam:GetAccountSummary |
— | 驗證整合連線能力。資源:*。 |
| 將使用者從群組中移除 | iam:RemoveUserFromGroup |
iam:GetAccountSummary |
從 IAM 群組中移除 IAM 使用者。Resource:目標 IAM 群組 ARN。 |
快速參考 (ActionName:Permission)
請參閱下列快速參考資料,瞭解各項操作所需的權限:
Ping: iam:GetAccountSummary
Add a User to a Group: iam:AddUserToGroup, iam:GetAccountSummary
Attach a Policy: iam:ListPolicies, iam:AttachUserPolicy, iam:AttachGroupPolicy, iam:AttachRolePolicy
Create a Group: iam:CreateGroup, iam:GetAccountSummary
Create a Policy: iam:CreatePolicy, iam:GetAccountSummary
Create a User: iam:CreateUser, iam:GetAccountSummary
Disable User Access: iam:PutUserPolicy
List Groups: iam:ListGroups, iam:GetAccountSummary
List Policies: iam:ListPolicies, iam:GetAccountSummary
List Users: iam:ListUsers, iam:GetAccountSummary
Remove a User from a Group: iam:RemoveUserFromGroup, iam:GetAccountSummary
IAM 政策範例 (最小權限)
以下範例政策說明在 Google SecOps 中執行所有 AWS IAM 動作所需的權限。
如需建立及附加 IAM 政策的操作說明,請參閱 AWS 說明文件中的「建立 IAM 政策」。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecOpsIAMDiscovery",
"Effect": "Allow",
"Action": [
"iam:GetAccountSummary",
"iam:ListUsers",
"iam:ListGroups",
"iam:ListPolicies"
],
"Resource": "*"
},
{
"Sid": "SecOpsIAMManagement",
"Effect": "Allow",
"Action": [
"iam:CreateUser",
"iam:CreateGroup",
"iam:CreatePolicy",
"iam:AddUserToGroup",
"iam:RemoveUserFromGroup",
"iam:PutUserPolicy",
"iam:AttachUserPolicy",
"iam:AttachGroupPolicy",
"iam:AttachRolePolicy"
],
"Resource": [
"arn:aws:iam::*:user/*",
"arn:aws:iam::*:group/*",
"arn:aws:iam::*:role/*",
"arn:aws:iam::*:policy/*"
]
}
]
}
整合參數
請使用下列參數設定整合:
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| AWS 存取金鑰 ID | 字串 | 不適用 | 是 | 要在整合中使用的 AWS 存取金鑰 ID。 |
| AWS Secret Key | 密碼 | 不適用 | 是 | 要在整合中使用的 AWS Secret。 |
| 驗證 SSL | 布林值 | 是 | 否 | 如果選取,整合功能會在連線至 AWS IAM 伺服器時驗證 SSL 憑證。 |
如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。
如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。
動作
如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。
將使用者加入群組
將指定使用者新增至指定 IAM 群組。使用群組,一次對多位使用者套用相同的權限政策。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 群組名稱 | 字串 | 不適用 | 是 | 要更新的群組名稱。注意:群組名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-.。 |
| 使用者名稱 | 字串 | 不適用 | 是 | 要新增的使用者名稱。注意:使用者名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-。請以逗號分隔值。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
動作應失敗並停止執行應對手冊:
|
一般 |
附加政策
將指定的受管理政策附加至身分 (使用者、群組、角色)。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 身分類型 | DDL |
群組 | 是 | IAM 身分類型。 |
| 身分名稱 | 字串 | 不適用 | 是 | 要附加政策的身分名稱 (易記名稱,而非 ARN)。身分名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-. |
| 政策名稱 | 字串 | 不適用 | 是 | 要附加政策的政策名稱 (易記名稱,而非 ARN)。政策名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-. |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
動作應失敗並停止執行應對手冊:
|
一般 |
建立群組
為 AWS 帳戶建立新的 IAM 群組。如要設定群組,您必須先建立群組。接著,根據您預期群組中的使用者會執行的工作類型,授予群組權限。最後,將使用者新增至群組。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 群組名稱 | 字串 | 不適用 | 是 | 要建立的群組名稱。以半形逗號分隔的值。注意:群組名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-。帳戶內的群組名稱不得重複。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
[{
"Arn":"arn:aws:iam::582302349248:group/ZivGroup",
"CreateDate":"2020-12-05 16:18:36+00:00",
"Path":"/",
"GroupId":"'AGPAYPE7MW7AMKCWMJPMX",
"GroupName":"ZivGroup"
}]
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
|
一般 |
建立政策
為 AWS 帳戶建立 IAM 客戶管理政策。這項操作會建立政策版本,版本 ID 為 v1,並將 v1 設為政策的預設版本。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 政策名稱 | 字串 | 不適用 | 是 | 要建立的政策名稱。政策名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-。帳戶內的政策名稱不得重複。 |
| 政策文件 | 字串 | 不適用 | 是 | 要用做新政策內容的 JSON 政策文件。 |
| 說明 | 字串 | 不適用 | 否 | 政策說明。通常用於儲存政策中定義的權限相關資訊。例如「授予正式環境 DynamoDB 資料表的存取權」。政策說明無法變更。指派值後即無法變更。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
{
"PolicyName": "S3-read-only-bucket",
"PolicyId": "ANPAYPE7MW7AFKUDK3HD7",
"Arn": "arn:aws:iam::582302349248:policy/S3-read-only-bucket",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 0,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2020-12-6T17:16:45",
"UpdateDate": "2020-12-6T17:16:45"
}
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
動作應失敗並停止執行應對手冊:
if not successful (LimitExceededException, wrong creds, no connection, other error): print "Error executing action 'Create a Policy'. 原因:{exception.stacktrace} |
一般 |
建立使用者
為 AWS 帳戶建立新的 IAM 使用者。您可以使用逗號分隔值,一次新增多位使用者。請注意,這個階段不會套用任何政策。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 使用者名稱 | 字串 | 不適用 | 是 | 要建立的使用者名稱。以半形逗號分隔的值。注意:使用者名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-。帳戶內的使用者名稱不得重複。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
[{
"Arn":"arn:aws:iam::582302349248:user/ziv",
"CreateDate":"2020-12-03T12:12:20",
"Path":"/",
"UserId":"AIDAYPE7MW7AFMHK4WCHS",
"UserName":"ziv"
}]
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
注意:如果沒有任何反應:所有使用者都無效/已存在/達到上限 → 動作應會失敗 動作應失敗並停止執行應對手冊:
注意:如果所有使用者名稱都無效,系統會顯示「執行『建立使用者』動作時發生錯誤。原因:{invalid usernames}:使用者名稱只能使用英數字元和/或下列字元:+=,.@-. {existing usernames}:名稱在帳戶中不得重複。 |
一般 |
停用使用者存取權
新增明確的內嵌拒絕政策,停用 AWS 中的使用者存取權。
這項動作僅支援一般 AWS 使用者,不支援聯合使用者或 IAM 角色。
實體
這項動作會對「使用者」實體執行。
動作輸入內容
不適用
動作輸出內容
| 動作輸出類型 | |
|---|---|
| 案件總覽附件 | 不適用 |
| 案件總覽連結 | 不適用 |
| 案件總覽表格 | 不適用 |
| 補充資訊表格 | 不適用 |
| JSON 結果 | 可用 |
| 指令碼執行結果 | 可用 |
JSON 結果
[
{
"Entity": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com",
"EntityResult": [
{
"fullResourceName": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com",
"activityType": "serviceAccountLastAuthentication",
"observationPeriod": {
"startTime": "2023-05-23T07:00:00Z",
"endTime": "2023-08-20T07:00:00Z"
},
"activity": {
"lastAuthenticatedTime": "2023-08-20T07:00:00Z",
"serviceAccount": {
"serviceAccountId": "example-account-id",
"projectNumber": "example-project-id",
"fullResourceName": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com"
}
}
}
]
}
]
指令碼執行結果
| 指令碼結果名稱 | 值 |
|---|---|
| is_success | True/False |
案件總覽
這項動作會提供下列輸出訊息:
| 輸出訊息 | 訊息說明 |
|---|---|
|
動作成功。 |
Successfully added deny policy to the following users in AWS
IAM: USERNAME_LIST |
動作失敗。 發生錯誤,無法將拒絕政策套用至至少一位指定使用者。 |
Error executing action "Disable User Access". Reason:
ERROR_REASON |
動作失敗。 請檢查伺服器連線、輸入參數或憑證。 |
可列出群組
取得 IAM 中所有群組的清單。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 要傳回的群組數量上限 | 整數 | 50 | 否 | 指定要傳回的群組數量。最多 1,000 個群組。預設值為 50。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
[{
"Arn":"arn:aws:iam::582302349248:group/ZivGroup",
"CreateDate":"2020-12-05 16:18:36+00:00",
"Path":"/",
"GroupId":"AGPAYPE7MW7AMKCWMJPMX",
"GroupName":"ZivGroup"
}]
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊: if successful: print "Successfully listed available groups in AWS IAM" 如果沒有可用資料:列印「AWS IAM 中找不到群組」
if not successful (wrong credentials, no connection to server, other server error, If 'Max Groups'> 1000): print "Error executing action 'List Groups'. 原因:{exception.stacktrace} |
一般 |
| CSV 表格 | 標題:IAM 群組 欄: 群組名稱 群組 ID ARN 建立日期 |
一般 |
可列出政策
列出 AWS 帳戶中所有可用的受管理政策,包括您自行定義的客戶受管理政策,以及所有 AWS 受管理政策。您可以使用選用的「Only Attached」(僅限附加)、「Scope」(範圍) 和「Policy Usage」(政策使用情形) 參數,篩選傳回的政策清單。舉例來說,如要僅列出 AWS 帳戶中客戶管理的政策,請將「Scope」設為「Local」。如要只列出 AWS 代管政策,請將「Scope」設為「AWS」。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 僅限已附加 | 布林值 | 否 | 否 | 勾選後,系統只會篩選出附加至 IAM 使用者、群組或角色的政策。如果取消勾選,系統會傳回所有政策。 |
| 範圍 | DDL |
全部 | 否 | 篩選結果時要使用的範圍。如要僅列出 AWS 代管政策,請將「Scope」設為「AWS」。如要只列出 AWS 帳戶中的客戶管理政策,請將「Scope」設為「Local」。根據預設,系統會傳回所有政策。 |
| 要傳回的政策數量上限 | 整數 | 100 | 否 | 指定要傳回的政策數量。預設值為 100。上限為 1000。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
[{
'PolicyName': 'string',
'PolicyId': 'string',
'Arn': 'string',
'Path': 'string',
'DefaultVersionId': 'string',
'AttachmentCount': 123,
'PermissionsBoundaryUsageCount': 123,
'IsAttachable': True|False,
'Description': 'string',
'CreateDate': "2020-12-6T17:16:45",
'UpdateDate':"2020-12-6T17:16:45"
}]
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
|
一般 |
| CSV 表格 | 標題:IAM 政策 欄: 政策名稱 政策 ID 建立日期 更新日期 |
一般 |
將使用者列入清單
取得 IAM 中所有使用者的清單。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 要傳回的使用者人數上限 | 整數 | 50 | 否 | 指定要傳回的使用者數量。上限為 1000 位使用者。預設值為 50。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
JSON 結果
[{
"Arn":"arn:aws:iam::582302349248:user/ziv",
"CreateDate":"2020-12-03T12:12:20",
"Path":"/",
"UserId":"AIDAYPE7MW7AFMHK4WCHS",
"UserName":"ziv"
}]
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊: if successful: print "Successfully listed available users in AWS IAM" 如果沒有可用資料:列印「No users found in AWS IAM」
if not successful (wrong credentials, no connection to server, other server error, if max>10000): print "Error executing action 'List Users'. 原因:{exception.stacktrace} |
一般 |
| CSV 表格 | 標題:IAM 使用者 欄: 使用者名稱 使用者 ID ARN 建立日期 |
一般 |
乒乓
在 Google SecOps Content Hub 頁面的整合設定頁面,使用提供的參數測試與 AWS IAM 的連線。
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊: if successful: print "Successfully connected to the AWS IAM server with the provided connection parameters!" 動作應失敗並停止執行應對手冊: if not successful: print "Failed to connect to the AWS IAM server! 錯誤為 {0}".format(exception.stacktrace) |
一般 |
從群組中移除使用者
將指定使用者新增至指定 IAM 群組。使用群組,一次對多位使用者套用相同的權限政策。
參數
| 參數顯示名稱 | 類型 | 預設值 | 為必填 | 說明 |
|---|---|---|---|---|
| 群組名稱 | 字串 | 不適用 | 是 | 要更新的群組名稱。注意:群組名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-.。 |
| 使用者名稱 | 字串 | 不適用 | 是 | 要移除的使用者名稱。注意:使用者名稱不得包含空格,且只能使用英數字元和/或下列字元:+=.@_-。請以逗號分隔值。 |
這項動作不會在 Google SecOps 實體上執行。
動作執行結果
指令碼執行結果
| 指令碼執行結果名稱 | 值選項 |
|---|---|
| is_success | is_success=False |
| is_success | is_success=True |
案件總覽
| 結果類型 | 值/說明 | 類型 |
|---|---|---|
| 輸出訊息* | 動作不應失敗,也不應停止執行應對手冊:
動作應失敗並停止執行應對手冊:
|
一般 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。