產生 IAM Access Analyzer 政策 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

產生 IAM Access Analyzer 政策

身為管理員或開發人員,您可能會將超出其所需範圍的許可授予 IAM 實體 (使用者或角色)。IAM 提供數個選項,協助您精簡您授予的許可。其中一種選擇是產生以實體存取活動基礎的 IAM 政策。IAM Access Analyzer 會檢閱您的 AWS CloudTrail 記錄並產生政策範本,其中包含實體在指定日期範圍內使用的許可。您可以使用範本來建立具有精細許可的政策,這些許可只會授予支援特定使用案例所需的許可。

政策產生的運作方式

IAM 存取分析器會分析您的 CloudTrail 事件,以識別 IAM 實體 (使用者或角色) 已使用的動作和服務。然後它會產生以該活動為基礎的 IAM 政策。當您使用產生的政策取代連接至實體的廣泛許可政策時,您可以精簡實體的許可。以下是政策產生程序的高階概觀。

  • 設定產生政策範本 — 您可以指定最多 90 天的時間範圍,讓 IAM Access Analyzer 分析您的歷史 AWS CloudTrail 事件分析。您必須指定現有的服務角色或建立新的服務角色。服務角色可讓 IAM Access Analyzer 存取您上次存取的 CloudTrail 追蹤和服務資訊,以識別使用的服務和動作。您必須指定記錄帳戶事件的 CloudTrail 追蹤,才能產生策略。如需 IAM 存取分析器資 CloudTrail 料配額的詳細資訊,請參閱 IAM 存取分析器配額

  • 產生政策 — IAM 存取分析器會根據您 CloudTrail 事件中的存取活動產生政策。

  • 檢閱和自訂政策 – 產生政策之後,您可以檢閱實體在指定日期範圍內所使用的服務和動作。您可以透過新增或移除許可、指定資源,以及將條件新增至政策範本,進一步自訂政策。

  • 建立並連接政策 – 您可以選擇透過建立受管政策來儲存產生的政策。您可以將建立的政策連接至使用其活動來產生政策的使用者或角色。

服務與動作層級資訊

IAM Access Analyzer 產生 IAM 政策時,系統會傳回資訊以協助您進一步自訂政策。產生政策時,可以傳回兩種類別的資訊:

  • 具有動作層級資訊的政策 — 對於某些 AWS 服務 (例如 Amazon EC2),IAM Access Analyzer 可以識別 CloudTrail 事件中發現的動作,並列出其產生的政策中使用的動作。如需支援服務的清單,請參閱 IAM Access Analyzer 政策產生服務。對於某些服務,IAM Access Analyzer 會提示您將服務的動作新增至產生的政策。

  • 具有服務層級資訊 – 的政策 IAM Access Analyzer 會使用最近存取的資訊來建立包含最近使用之所有服務的政策範本。使用時 AWS Management Console,我們會提示您檢閱服務並新增動作以完成政策。

如需每個服務中的動作清單,請參閱服務授權參考中的AWS 服務的動作、資源和條件金鑰

產生政策的注意事項

產生政策之前,請先檢閱下列重要詳細資訊。

  • 啟用 CloudTrail 追蹤 — 您必須為帳戶啟用 CloudTrail 追蹤,才能根據存取活動產生策略。建立 CloudTrail 追蹤時, CloudTrail 會將與追蹤相關的事件傳送到您指定的 Amazon S3 儲存貯體。若要瞭解如何建立 CloudTrail 追蹤,請參閱「AWS CloudTrail 使用者指南」中的「為您的 AWS 帳戶建立追蹤」。

  • 資料事件無法使用 – IAM Access Analyzer 不會在產生的政策中識別資料事件 (例如 Amazon S3 資料事件) 的動作層級活動。

  • PassRoleiam:PassRole 動作不會由所產生的策略追蹤 CloudTrail ,也不會包含在產生的策略中。

  • 縮短政策產生時間 – 若要更快產生政策,請減少您在設定政策產生期間指定的日期範圍。

  • 用 CloudTrail 於稽核 — 請勿將原則產生用於稽核目的;請 CloudTrail 改為使用。如需使用的詳細資訊 CloudTrail,請參閱使用 AWS CloudTrail. AWS STS

  • 拒絕的操作 — 策略生成會審核所有 CloudTrail 事件,包括拒絕的操作。

  • 一個政策 IAM 主控台 – 您可以在 IAM 主控台中一次產生一個政策。

  • 在 IAM 主控台所產生政策的可用性 – 您可以在政策產生後最多 7 天內檢閱 IAM 主控台中產生的政策。7 天後,您必須產生新政策。

  • 政策產生配額 – 如需有關 IAM Access Analyzer 政策產生配額的其他資訊,請參閱 IAM Access Analyzer 配額

  • Amazon S3 標準費率適用 — 當您使用政策產生功能時,IAM 存取分析器會檢閱 S3 儲存貯體中的 CloudTrail 日誌。存取 CloudTrail 記錄檔以產生原則時不會產生額外的儲存費用。 AWS 針對存放在 S3 儲存貯體中的 CloudTrail 日誌的請求和資料傳輸收取標準 Amazon S3 費率的費用。

  • AWS Control Tower 支援 — 原則產生不支援 AWS Control Tower 產生原則。

產生政策所需的許可

您第一次產生政策所需的許可與您需要產生政策以供後續使用的許可不同。

首次設定

第一次產生政策時,您必須在帳戶中選擇合適的現有服務角色,或建立新的服務角色。服務角色可讓 IAM 存取分析器存取您帳戶中上次存取的資訊, CloudTrail 並提供服務。只有管理員應具有建立和設定角色所需的許可。因此,我們建議管理員在第一次設定期間建立服務角色。若要深入瞭解建立服務角色所需的權限,請參閱建立角色以將權限委派給 AWS 服務

當您建立服務角色時,您可以設定該角色的兩個政策。您可以將 IAM 許可政策連接至指定角色可執行內容的角色。您也可以將角色信任政策連接至指定可以使用該角色之主體的角色。

第一個範例政策顯示產生政策所需之服務角色的許可政策。第二個範例政策顯示服務角色所需的角色信任政策。您可以使用這些原則來協助您在使用 AWS API 或 AWS CLI 產生政策時建立服務角色。當您使用 IAM 主控台建立服務角色作為政策產生程序的一部分時,我們會為您產生這些政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudtrail:GetTrail", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetServiceLastAccessedDetails", "iam:GenerateServiceLastAccessedDetails" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

下列範例政策顯示具有允許 IAM Access Analyzer 擔任角色之許可的角色信任政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "access-analyzer.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
後續使用

若要在中產生政策 AWS Management Console,IAM 使用者必須具有許可政策,允許他們將用於產生政策的服務角色傳遞至 IAM Access Analyzer。 iam:PassRole通常伴隨著以iam:GetRole便用戶可以獲得要傳遞的角色的詳細信息。在這個範例中,使用者可以僅傳遞存在於指定的帳戶,名稱開頭為 AccessAnalyzerMonitorServiceRole* 的角色。若要進一步了解如何將 IAM 角色傳遞給 AWS 服務,請參閱授與使用者權限以將角色傳遞給 AWS 服務

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUserToPassRole", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/service-role/AccessAnalyzerMonitorServiceRole*" } ] }

您還必須具有下列 IAM 存取分析器許可,才能在 AWS Management Console、 AWS API 中產生政策,或 AWS CLI 如下列政策聲明所示。

{ "Sid": "AllowUserToGeneratePolicy", "Effect": "Allow", "Action": [ "access-analyzer:CancelPolicyGeneration", "access-analyzer:GetGeneratedPolicy", "access-analyzer:ListPolicyGenerations", "access-analyzer:StartPolicyGeneration" ], "Resource": "*" }
適用於首次及後續使用

當您使用產生策略時,您必須具有列出帳戶中 CloudTrail 追蹤的cloudtrail:ListTrails權限,如下列政策聲明所示。 AWS Management Console

{ "Sid": "AllowUserToListTrails", "Effect": "Allow", "Action": [ "CloudTrail:ListTrails" ], "Resource": "*" }

根據 CloudTrail 活動 (主控台) 產生策略

您可以為 IAM 使用者或角色產生政策。

步驟 1:根據 CloudTrail 活動產生策略

下列程序說明如何使用 AWS Management Console產生角色的政策。

產生 IAM 角色的政策
  1. 登入 AWS Management Console 並開啟 IAM 主控台,網址為 https://console.aws.amazon.com/iam/

  2. 在左側導覽窗格中,選擇 Roles (角色)。

    注意

    根據 IAM 使用者之活動產生政策的步驟幾乎相同。若要這樣做,請選擇 Users (使用者) 而非 Roles (角色)。

  3. 在帳戶中的角色清單中,選擇您要用來產生政策之活動的角色名稱。

  4. 在 [權限] 索引標籤的 [根據 CloudTrail 事件產生原則] 區段中,選擇 [產生策略]。

  5. 在 [產生政策] 頁面上,指定您希望 IAM Access Analyzer 分析事件以針對角色採取的動作來分析 CloudTrail 事件的期間。您可以選擇最多 90 天的範圍。我們建議您選擇最短的時間間隔,以減少政策產生時間。

  6. 在 [存CloudTrail 取] 區段中,選擇適當的現有角色或建立新角色 (如果不存在適當的角色)。該角色授予 IAM Access Analyzer 許可,以代表您存取您的 CloudTrail 資料,以檢閱存取活動以識別已使用的服務和動作。若要進一步了解此角色所需的許可,請參閱 產生政策所需的許可

  7. 在「要分析的CloudTrail 追蹤」區段中,指定記錄帳戶事件的 CloudTrail 追蹤。

    如果您選擇將記錄儲存在其他帳戶中的 CloudTrail 追蹤,則會顯示有關跨帳戶存取的資訊方塊。跨帳戶存取需要額外的設定。如需進一步了解,請參閱本主題稍後的 Choose a role for cross-account access

  8. 選擇 Generate policy (產生政策)。

  9. 當正在產生政策時,您會返回 Permissions (許可) 索引標籤上的 Roles Summary (角色摘要) 頁面。等待 Policy request details (政策請求詳細資訊) 區段中的狀態顯示 Success (成功),然後選擇 View generated policy (檢視產生的政策)。您可以在最多七天內檢視產生的政策。如果您產生另一個政策,則現有政策會被您產生的新政策取代。

步驟 2:檢閱許可並為所使用之服務新增動作

檢閱 IAM Access Analyzer 識別出之角色所使用的服務和動作。您可以針對所產生的政策範本中使用的任何服務新增動作。

  1. 請檢閱下列各節:

    • Review permissions (檢閱許可) 頁面上,檢閱 Actions included in the generated policy (產生政策中所包含的動作) 清單。清單會顯示 IAM Access Analyzer 識別的在指定日期範圍內由角色使用的服務動作。

    • Services used (所使用的服務) 區段會顯示 IAM Access Analyzer 識別的在指定日期範圍中角色所使用的其他服務。使用哪些動作的相關資訊可能不適用於本節所列的服務。使用列出的每個服務的功能表,手動選擇您要包含在政策中的動作。

  2. 完成新增動作後,請選擇 Next (下一步)。

步驟 3:進一步自訂產生的政策

您可以透過新增或移除許可或指定資源,進一步自訂政策。

自訂產生的政策
  1. 更新政策範本。政策範本包含支援資源層級許可之動作的資源 ARN 預留位置,如下圖所示。資源層級許可能夠讓您指定使用者可執行動作的資源。建議您使用 ARN 在政策中為支援資源層級許可的動作指定個別資源。您可以將預留位置資源 ARN 取代為使用案例的有效資源 ARN。

    如果動作不支援資源層級許可,您必須使用萬用字元 (*) 來指定該動作可以影響所有資源。若要了解哪些 AWS 服務支援資源層級許可,請參閱使用 IAM 的AWS 服務。如需每項服務中的動作清單,以及了解哪些動作支援資源層級許可,請參閱 AWS 服務的動作、資源和條件索引鍵

    政策範本中的資源 ARN 預留位置
  2. (選用) 在範本中新增、修改或移除 JSON 政策陳述式。若要進一步了解如何撰寫 JSON 政策,請參閱建立 IAM 政策 (主控台)

  3. 完成自訂政策範本後,您有下列選項:

    • (選用) 您可以複製範本中的 JSON,以便在 Generated policy (產生的政策) 頁面之外獨立使用。例如,如果您想要使用 JSON 在不同的帳戶中建立政策。如果範本中的政策超過 JSON 政策的 6,144 個字元限制,則政策會分割成多個政策。

    • 選擇 Next (下一步) 以檢閱並在同一個帳戶中建立受管政策。

步驟 4:檢閱並建立受管政策

如果您有建立和連接 IAM 政策的許可,則可以從產生的政策中建立受管政策。然後,您可以將政策連接至帳戶中的使用者或角色。

檢閱和建立政策
  1. Review and create managed policy (檢閱並建立受管政策) 頁面上,為您正在建立的政策輸入 Name (名稱) 與 Description (描述) (選用)。

  2. (選用) 在 Summary (摘要) 區段中,您可以檢閱將包含在政策中的許可。

  3. (選用) 藉由連接標籤作為鍵值組,將中繼資料新增至政策。如需在 IAM 中使用標籤的詳細資訊,請參閱標記 IAM 資源

  4. 完成後,請執行下列其中一項動作:

    • 您可以將新政策直接連接至用來產生政策的角色。若要這麼做,請在頁面底部附近選取 [將原則附加至YourRole名稱] 旁邊的核取方塊。然後選擇 Create and attach policy (建立並連接政策)。

    • 否則,請選擇 Create policy (建立政策)。您可以在 IAM 主控台的 Policies (政策) 導覽窗格的政策清單中找到您建立的政策。

  5. 您可以將您建立的政策連接至帳戶中的實體。連接政策之後,您可以移除可能連接至實體的任何其他過於廣泛的政策。若要了解如何連接受管政策,請參閱新增 IAM 身分許可 (主控台)

使用其他帳戶中的 AWS CloudTrail 資料產生策略

您可以創建將數據存儲在中央帳戶中的 CloudTrail 跟踪以簡化管理活動。例如,您可以使 AWS Organizations 用建立追蹤,以記錄該組織中所有事件 AWS 帳戶 的所有事件。這條追蹤屬於一個中央帳戶。如果您想要為帳戶中的使用者或角色產生政策,而該策略與儲存 CloudTrail 記錄資料的帳戶不同,則必須授與跨帳戶存取權限。為此,您需要一個角色和值區政策,以授予 IAM Access Analyzer 權限給您的 CloudTrail 日誌。如需建立 Organizations 追蹤的詳細資訊,請參閱為組織建立追蹤

在此範例中,假設您想要為帳戶 A 中的使用者或角色產生策略。帳戶 A 中的 CloudTrail 追蹤會將 CloudTrail 記錄儲存在帳戶 B 中的值區中儲存在值區中,才能產生策略,您必須先進行下列更新:

  1. 選擇現有角色,或建立新的服務角色,以授予 IAM Access Analyzer 存取帳戶 B (儲存 CloudTrail 記錄的位置) 中儲存貯體的存取權。

  2. 在帳戶 B 中確認 Amazon S3 儲存貯體物件擁有權和儲存貯體許可政策,以便 IAM Access Analyzer 可存取儲存貯體中的物件。

步驟 1:選擇或建立跨帳戶存取的角色
  • 產生政策畫面中,如果您的帳戶中存在具有必要許可的角色,則會為您預先選取使用現有的角色選項。否則,請選擇建立並使用新的服務角色。新角色用於授與 IAM 存取分析器存取權限,存取帳戶 B 中的 CloudTrail 記錄。

步驟 2:在帳戶 B 中確認或更新您的 Amazon S3 儲存貯體組態
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

  2. 在「值區」清單中,選擇儲存 CloudTrail 追蹤記錄的值區名稱。

  3. 選擇 Permissions (許可) 索引標籤,然後轉至 Object Ownership (物件擁有權) 區段。

    使用 Amazon S3 物件擁有權儲存貯體設定,可控制您上傳至儲存貯體的物件的擁有權。根據預設,當其他 AWS 帳戶 上傳物件至您的值區時,上傳帳戶會擁有這些物件。若要產生政策,儲存貯體擁有者必須擁有儲存貯體中的所有物件。根據您的 ACL 使用案例,您可能需要變更儲存貯體的 Object Ownership (物件擁有權) 設定。將 Object Ownership (物件擁有權) 設定為下列其中一個選項。

    • Bucket owner enforced (儲存貯體擁有者強制執行) (建議)

    • Bucket owner preferred (儲存貯體擁有者偏好)

    重要

    若要成功產生政策,儲存貯體中的物件必須由儲存貯體擁有者擁有。如果您選擇使用儲存貯體擁有者偏好,您只能在物件擁有權變更後的期間內產生政策。

    如需有關 Amazon S3 中物件擁有權的詳細資訊,請參閱《Amazon S3 使用者指南》中的控制物件的擁有權並停用儲存貯體的 ACL

  4. 將許可新增到帳戶 B 中的 Amazon S3 儲存貯體政策,以允許存取帳戶 A 中的角色。

    下列範例政策允許名為 DOC-EXAMPLE-BUCKET 之儲存貯體的 ListBucketGetObject。如果存取儲存貯體的角色屬於貴組織中的帳戶,且名稱開頭為 AccessAnalyzerMonitorServiceRole,則允許存取。在Resource元素Condition中使用aws:PrincipalArn作為可確保角色只DOC-EXAMPLE-BUCKET有在帳戶屬於帳戶 A 時,才能存取帳戶的活動。您可以使optional-prefix用值區名稱、值區的選擇性字首以及organization-id組織 ID 來取代。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyGenerationBucketPolicy", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/optional-prefix/AWSLogs/organization-id/${aws:PrincipalAccount}/*" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "organization-id" }, "StringLike": { "aws:PrincipalArn": "arn:aws:iam::${aws:PrincipalAccount}:role/service-role/AccessAnalyzerMonitorServiceRole*" } } } ] }
  5. 如果您使用加密日誌 AWS KMS,請在存放日 CloudTrail 誌的帳戶中更新 AWS KMS 金鑰政策,以授予 IAM Access Analyzer 存取權以使用您的金鑰,如以下政策範例所示。將 CROSS_ACCOUNT_ORG_TRAIL_FULL_ARN 取代為您追蹤的 ARN 以及將 organization-id 取代為貴組織 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudtrail:arn": "CROSS_ACCOUNT_ORG_TRAIL_FULL_ARN", "aws:PrincipalOrgID": "organization-id" }, "StringLike": { "kms:ViaService": [ "access-analyzer.*.amazonaws.com", "s3.*.amazonaws.com" ] "aws:PrincipalArn": "arn:aws:iam::${aws:PrincipalAccount}:role/service-role/AccessAnalyzerMonitorServiceRole*" } } } ] }

根據 CloudTrail活動 (AWS CLI) 產生政策

您可以使用以下列命令藉由 AWS CLI產生政策。

檢視政策產生請求的清單

根據 CloudTrail活動 (AWS API) 產生政策

您可以使用下列作業,使用 AWS API 產生政策。

產生政策
檢視產生的政策
取消政策產生請求
檢視政策產生請求的清單