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

產生 IAM Access Analyzer 政策

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

政策產生的運作方式

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

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

  • 產生政策 – IAM Access Analyzer 會根據 CloudTrail 事件中的存取活動產生政策。

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

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

服務與動作層級資訊

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

  • 含動作層級資訊 – 的政策有些 AWS 服務 (例如 Amazon EC2),IAM Access Analyzer 可識別 CloudTrail 事件中找到的動作,並列出產生政策中所使用的動作。對於某些服務,我們會提示您將服務的動作新增至產生的政策。

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

IAM Access Analyzer 會產生具有下列 AWS 服務之動作層級資訊的政策。如需每個服務中的動作清單,請參閱服務授權參考中的適用於 AWS 服務的動作、資源及條件金鑰

  • IAM Access Analyzer

  • AWS Amplify

  • Amazon AppIntegrations

  • Amazon AppFlow

  • AWS Application Cost Profiler

  • Amazon Athena

  • AWS Batch

  • Amazon Braket

  • AWS CloudTrail

  • Amazon CloudWatch

  • Amazon CloudWatch Logs

  • Amazon CloudWatch Synthetics

  • Amazon CodeGuru Profiler

  • Amazon Cognito 身分

  • Amazon Cognito Sync

  • Amazon Cognito 使用者集區

  • AWS Cost and Usage Report

  • Amazon DevOps Guru

  • Device Advisor

  • AWS Directory Service

  • Amazon Elastic Block Store

  • Amazon EC2

  • Amazon Elastic Container Registry

  • Amazon ECS

  • Elastic Load Balancing

  • Amazon EventBridge Schemas

  • Fleet Hub for AWS IoT Device Management

  • AWS Ground Station

  • Amazon GuardDuty

  • IAM

  • Amazon Interactive Video Service

  • AWS KMS

  • Amazon Kinesis Data Firehose

  • AWS Lambda

  • Amazon MQ

  • Amazon Managed Blockchain

  • Amazon Managed Streaming for Apache Kafka

  • AWS Marketplace

  • Amazon Nimble Studio

  • AWS OpsWorks

  • AWS Outposts

  • AWS 績效詳情

  • Amazon RDS

  • AWS RAM

  • AWS Resource Groups

  • Resource Groups 標記 API

  • Savings Plans

  • AWS Secrets Manager

  • AWS Security Hub

  • AWS Security Token Service

  • AWS Server Migration Service

  • Service Quotas

  • AWS Signer

  • Amazon Simple Email Service

  • Amazon Simple Storage Service

  • AWS Systems Manager

  • Amazon Textract

  • Amazon Translate

  • AWS Well-Architected Tool

  • Amazon WorkLink

產生政策的注意事項

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

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

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

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

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

  • 使用 CloudTrail 稽核 – 請勿將政策產生用於稽核用途;請改用 CloudTrail。如需使用 CloudTrail 的詳細資訊,請參閱使用 AWS CloudTrail 記錄 IAM 和 AWS STS API 呼叫

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

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

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

  • 適用 Amazon S3 標準費率 - 當您使用政策產生功能時,IAM Access Analyzer 會檢閱 S3 儲存貯體中的 CloudTrail 日誌。存取 CloudTrail 日誌以產生政策時,無需支付額外的儲存費用。AWS 針對存放在 S3 儲存貯體中的 CloudTrail 日誌的請求和資料傳輸收取標準 Amazon S3 費率的費用。

產生政策所需的許可

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

首次設定

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudtrail:GetTrail", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GenerateServiceLastAccessedDetails", "iam:GetServiceLastAccessedDetails" ], "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 Access Analyzer 許可,才能在 AWS Management Console、AWS、API 或 AWS CLI 中產生政策,如下列政策陳述式所示。

{ "Sid": "AllowUserToGeneratePolicy", "Effect": "Allow", "Action": [ "access-analyzer:ListPolicyGenerations", "access-analyzer:StartPolicyGeneration", "access-analyzer:GetGeneratedPolicy", "access-analyzer:CancelPolicyGeneration" ], "Resource": "*" } ] }

適用於首次及後續使用

當您使用 AWS Management Console 來產生政策時,您必須具有列出帳戶中 CloudTrail 追蹤的 cloudtrail:ListTrails 許可,如下列政策陳述式所示。

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

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

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

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

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

產生 IAM 角色的政策

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

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

    注意

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

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

  4. Permissions (許可) 索引標籤的 Generate policy based on CloudTrail events (根據 CloudTrail 事件產生政策) 區段中,選擇 Generate policy (產生政策)。

  5. Generate policy (產生政策) 頁面上,指定您要 IAM Access Analyzer 分析 CloudTrail 事件的時間間隔,以執行角色所採取的動作。您可以選擇最多 90 天的範圍。我們建議您選擇最短的時間間隔,以減少政策產生時間。

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

  7. CloudTrail trail to be analyzed (要分析的 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. 完成後,請執行下列其中一項動作:

    • 您可以將新政策直接連接至用來產生政策的角色。若要執行這項操作,請在頁面底部附近,選取 Attach policy to YourRoleName (將政策連接至 YourRoleName) 旁的核取方塊。然後選擇 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 Access Analyzer 存取帳戶 B 中 CloudTrail 記錄的存取權。

步驟 2:在帳戶 B 中確認或更新您的 Amazon S3 儲存貯體組態

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon 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,則允許存取。使用 aws:PrincipalArn 做為 Resource 元素中的 Condition 可確保角色只能存取帳戶的活動 (如果其屬於帳戶 A)。您可以將 DOC-EXAMPLE-BUCKET 取代為您的儲存貯體名稱,以及將 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/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 來加密日誌,請更新您的 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": "s3.*.amazonaws.com", "aws:PrincipalArn": "arn:aws:iam::${aws:PrincipalAccount}:role/service-role/AccessAnalyzerMonitorServiceRole*" } } } ] }

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

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

檢視政策產生請求的清單

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

您可以使用下列操作來使用 AWS API 產生政策。

產生政策

檢視產生的政策

取消政策產生請求

檢視政策產生請求的清單