使用上次存取資訊的範例案例 - AWS Identity and Access Management

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

使用上次存取資訊的範例案例

您可以使用上次存取的資訊來決定授與 IAM 實體或 AWS Organizations 實體的許可。如需詳細資訊,請參閱 AWS 使用上次存取的資訊精簡權限

注意

在 IAM 中檢視實體或政策的存取資訊之前 AWS Organizations,或確定您瞭解資料的報告期間、報告的實體以及評估的政策類型。如需詳細資訊,請參閱 關於上次存取資訊的注意事項

身為管理員的您,可以在可存取性與最低權限取得平衡,以符合您公司的需求。

使用資訊減少 IAM 群組的許可

您可以使用上次存取資訊以減少 IAM 群組許可,使其僅包含您的使用者所需要的服務。此方法在服務等級的授予最低權限中是一個重要的步驟。

例如,Paulo Santos 是負責定義範例公司使用 AWS 者權限的管理員。這家公司剛開始使用 AWS,而軟體開發團隊尚未定義他們將使用的 AWS 服務。Paulo 打算僅提供該團隊所需服務的存取許可,但由於尚未定義相關服務,因此 Paulo 暫時提供該團隊進階使用者許可。然後,他會使用上次存取的資訊來減少群組的許可。

Paulo 使用以下 JSON 文字建立一個名為 ExampleDevelopment 的受管政策。然後,他將其連接至名為 Development 的群組,並將所有開發人員新增至該群組。

注意

Paulo 的進階使用者可能需要 iam:CreateServiceLinkedRole 許可才能使用某些服務和功能。他了解新增此許可會允許使用者建立任何服務連結的角色。他接受其進階使用者的這種風險。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessToAllServicesExceptPeopleManagement", "Effect": "Allow", "NotAction": [ "iam:*", "organizations:*" ], "Resource": "*" }, { "Sid": "RequiredIamAndOrgsActions", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListRoles", "organizations:DescribeOrganization" ], "Resource": "*" } ] }

Paulo 決定在他檢視上次存取資訊前等待 90 天,然後讓 Development 群組使用 AWS Management Console。他檢視群組成員曾經存取的服務清單。他了解到用戶在上週訪問了五個服務: AWS CloudTrail Amazon CloudWatch 日誌,Amazon EC2 和 Amazon S3。 AWS KMS他們在第一次評估時訪問了其他一些服務 AWS,但從那時起就沒有。

Paulo 決定減少政策許可,使其僅包含這五種服務和必要的 IAM 與 Organizations 動作。他使用以下 JSON 文字編輯 ExampleDevelopment 政策。

注意

Paulo 的進階使用者可能需要 iam:CreateServiceLinkedRole 許可才能使用某些服務和功能。他了解新增此許可會允許使用者建立任何服務連結的角色。他接受其進階使用者的這種風險。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessToListedServices", "Effect": "Allow", "Action": [ "s3:*", "kms:*", "cloudtrail:*", "logs:*", "ec2:*" ], "Resource": "*" }, { "Sid": "RequiredIamAndOrgsActions", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListRoles", "organizations:DescribeOrganization" ], "Resource": "*" } ] }

為了進一步降低權限,Paulo 可以在 AWS CloudTrail 事件歷史記錄中查看帳戶的事件。他可在此檢視詳細的事件資訊,以用於減少政策的許可,使其僅包含開發人員需要的動作和資源。如需詳細資訊,請參閱《使用指南》中的〈在 CloudTrail 主控台中檢視 CloudTrail 事件AWS CloudTrail

使用資訊減少 IAM 使用者的許可

您可以使用上次存取資訊,以減少個別 IAM 使用者的許可。

例如,Martha Rivera 是 IT 管理員,負責確保公司中的人員沒有過多 AWS 的權限。在定期安全性檢查中,她會檢查所有 IAM 使用者的許可。在這些使用者中,有一位名為 Nikhil Jayashankar 的應用程式開發人員,過去曾經擔任安全工程師。因為任務需求的變更,Nikhil 同時是 app-dev 群組和 security-team 群組的成員。app-dev 群組為其新任務授予多項服務的許可,包括 Amazon EC2、Amazon EBS、Auto Scaling、Amazon S3、Route 53 和 Elastic Transcoder。舊工作的security-team群組將許可授予 IAM 和 CloudTrail.

作為管理員,Martha 登入 IAM 主控台,依序選擇 Users (使用者)、名稱 nikhilj,然後選擇 Access Advisor (存取顧問) 標籤。

瑪莎回顧了上次訪問列,並通知 Nikhil 最近沒有訪問 IAM,路線 53 CloudTrail,Amazon Elastic Transcoder 以及許多其他服務。 AWS Nikhil 已經存取 Amazon S3。Martha 從服務清單中選擇 S3,並得知 Nikhil 在過去兩週內執行了一些 S3 List 動作。在她的公司內部,Martha 確認 Nikhil 不再需要訪問 IAM,因為他不 CloudTrail 再是內部安全團隊的成員。

Martha 現在已經準備好對服務採取行動,並採取行動上次存取的資訊。不過,不同於先前範例中的群組,像是 nikhilj 這樣的 IAM 使用者可能會受到多個政策的約束,並且可能是多個群組的成員。Martha 必須小心處理以避免不慎中斷 nikhilj 或其他群組成員的存取。除了了解 Nikhil 應有哪些存取,她也必須判斷 Nikhil 應如何接收這些許可。

Martha 選擇 Permissions (許可) 標籤,她檢視哪些政策直接連接至 nikhilj,以及從群組連接的政策。她展開每個政策並檢視政策摘要,以了解哪個政策允許 Nikhil 存取他沒有在使用的服務:

  • IAM — 受IAMFullAccess AWS 管政策會直接附加至群組nikhilj並附加至security-team群組。

  • CloudTrail — 受AWS CloudTrailReadOnlyAccess AWS 管理的原則會附加至security-team群組。

  • Route 53 – App-Dev-Route53 客戶受管政策連接至 app-dev 群組。

  • Elastic Transcoder – App-Dev-ElasticTranscoder 客戶受管政策連接至 app-dev 群組。

Martha 決定移除直接附加至的IAMFullAccess AWS 受管理政策。nikhilj她也移除 Nikhil 的 security-team 群組成員資格。這兩個動作會移除不必要的 IAM 和 CloudTrail.

Nikhil 存取 Route 53 和 Elastic Transcoder 的許可是由 app-dev 群組所授予。雖然 Nikhil 沒有使用這些服務,但群組的其他成員可能會使用。Martha 會檢閱 app-dev 群組上次存取的資訊,並得知多位成員最近存取 Route 53 和 Amazon S3。但在去年沒有任何群組成員存取過 Elastic Transcoder。她從群組移除 App-Dev-ElasticTranscoder 客戶受管政策。

然後,Martha 檢閱了 App-Dev-ElasticTranscoder 客戶受管政策的上次存取資訊。她發現該政策未連接至任何其他 IAM 身分。她在公司內部進行調查以確定未來不需要此政策,然後將此政策刪除。

刪除 IAM 資源前使用資訊

您可以在刪除 IAM 資源之前使用上次存取資訊,以確保在最後一次有人使用該資源之後已經過一段特定的時間。這適用於使用者、群組、角色及政策。若要進一步了解這些動作的詳細資訊,請參閱下列主題:

編輯 IAM 政策前使用資訊

您可以在編輯會影響該資源的政策之前,檢閱上次存取資訊中的 IAM 身分 (使用者、群組或角色) 或 IAM 政策。這是重要的,因為您不會想要移除使用該政策者的存取權。

例如,Arnav Desai 是 Example Corp. 的開發人員和 AWS 管理員當他的團隊開始使用時 AWS,他們提供了所有開發人員進階使用者存取權,允許他們完全存取 IAM 和 Organizations 外的所有服務。作為授予最低權限的第一步,Arnav 希望使用 AWS CLI 來檢閱其帳戶中的受管理策略。

因此,Arnav 首先列出其帳戶中連接至身分的客戶受管許可政策,他使用下列命令:

aws iam list-policies --scope Local --only-attached --policy-usage-filter PermissionsPolicy

他從回應中擷取每個政策的 ARN。然後,Arnav 使用下列命令,為每個政策產生上次存取資訊的報告。

aws iam generate-service-last-accessed-details --arn arn:aws:iam::123456789012:policy/ExamplePolicy1

從回應中,他從 JobId 欄位擷取所產生報告的 ID。然後,Arnav 輪詢下列命令,直到 JobStatus 欄位傳回 COMPLETEDFAILED 值。如果任務失敗,他將會擷取錯誤。

aws iam get-service-last-accessed-details --job-id 98a765b4-3cde-2101-2345-example678f9

當任務的狀態為 COMPLETED 時,Arnav 剖析 JSON 格式 ServicesLastAccessed 陣列的內容。

"ServicesLastAccessed": [ { "TotalAuthenticatedEntities": 1, "LastAuthenticated": 2018-11-01T21:24:33.222Z, "ServiceNamespace": "dynamodb", "LastAuthenticatedEntity": "arn:aws:iam::123456789012:user/IAMExampleUser", "ServiceName": "Amazon DynamoDB" }, { "TotalAuthenticatedEntities": 0, "ServiceNamespace": "ec2", "ServiceName": "Amazon EC2" }, { "TotalAuthenticatedEntities": 3, "LastAuthenticated": 2018-08-25T15:29:51.156Z, "ServiceNamespace": "s3", "LastAuthenticatedEntity": "arn:aws:iam::123456789012:role/IAMExampleRole", "ServiceName": "Amazon S3" } ]

Arnav 透過此資訊發現 ExamplePolicy1 政策允許存取三項服務、Amazon DynamoDB、Amazon S3 和 Amazon EC2。名為 IAMExampleUser 的 IAM 使用者與 11 月 1 日最後一次嘗試存取 DynamoDB,另有某人於 8 月 25 日使用了 IAMExampleRole 角色嘗試存取 Amazon S3。另有兩個實體在過去一年嘗試存取 Amazon S3。不過,過去一年無人嘗試存取 Amazon EC2。

這表示 Arnav 可以安全地從政策中移除 Amazon EC2 動作。Arnav 想要檢閱該政策目前的 JSON 文件。首先,他必須使用以下命令判斷政策的版本號碼。

aws iam list-policy-versions --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1

Arnav 從回應中的 Versions 陣列收集到目前的預設版本號碼。然後,他使用該版本號碼 (v2) 以及以下命令請求 JSON 政策文件。

aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1 --version-id v2

Arnav 將傳回的 JSON 政策文件存放於 Document 陣列的 PolicyVersion 欄位。在政策文件中,Arnav 搜尋 ec2 命名空間中的動作。如果政策中沒有來自其他命名空間的動作,他將會分開政策與受影響的身分 (使用者、群組和角色)。而後他會刪除政策。在這種情況下,政策並包含 Amazon DynamoDB 與 Amazon S3 服務。因此,Arnav 會從文件中移除 Amazon EC2 動作,並儲存變更。然後,他使用下列命令來更新使用新文件版本的政策,然後將該版本設定為預設的政策版本。

aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/ExamplePolicy1 --policy-document file://UpdatedPolicy.json --set-as-default

ExamplePolicy1 政策現在已更新,以移除不必要 Amazon EC2 服務的存取權。

其他 IAM 案例

有關 IAM 資源 (使用者、群組、角色或政策) 上次嘗試存取服務時間的資訊,可在您完成下列任一項任務時提供協助:

使用資訊來調整組織單位的許可

您可以使用上次存取資訊,以強化 AWS Organizations中組織單位 (OU) 的許可。

例如,約翰·斯泰爾斯是 AWS Organizations 管理員。他負責確保公司中的人員 AWS 帳戶 沒有過多的權限。在定期安全稽核中,他會檢查其組織的許可。他的 Development OU 包含通常用來測試新 AWS 服務的帳戶。John 決定要定期檢查超過 180 天未存取的服務報告。然後,他的 OU 成員會移除存取那些服務的許可。

John 使用自己的管理帳戶憑證登入 IAM 主控台。在 IAM 主控台,他為 Development OU 定位 Organizations 資料。他檢閱「服務存取」報告表格,並看到兩個在他偏好的 180 天內未存取的 AWS 服務。他記得新增許可的開發團隊存取 Amazon Lex 和 AWS Database Migration Service. John 聯絡開發團隊,並確認他們不再有測試這些服務的商業需求。

Martha 現在已經準備好對上次存取的資訊採取行動。他選擇 Edit in AWS Organizations (在 AWS Organizations中編輯),而且收到提醒,表示已將 SCP 連接至多個實體。他選擇 Continue (繼續)。在中 AWS Organizations,他會檢閱目標,以瞭解 SCP 所附加的「Organizations」實體。所有實體都位於 Development OU 內。

約翰決定拒絕訪問 Amazon Lex 和 NewServiceTest SCP 中的 AWS Database Migration Service 行動。這個動作移除了不必要的服務存取。