适用于 的基于身份的策略示例AmazonGuardDuty - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 的基于身份的策略示例AmazonGuardDuty

默认情况下,IAM 用户和角色没有创建或修改 GuardDuty 资源的权限。它们还无法使用 Amazon Web Services Management Console、Amazon CLI 或 Amazon API 执行任务。IAM 管理员必须创建 IAM 策略,以便为用户和角色授予权限以对所需的资源执行操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

要了解如何使用这些示例 JSON 策略文档创建 IAM 基于身份的策略,请参阅 IAM 用户指南 中的在 JSON 选项卡上创建策略

策略最佳实践

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 GuardDuty 资源。这些操作可能会使 Amazon Web Services 账户 产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:

  • 入门Amazon托管策略— 要快速开始使 GuardDuty,请使用Amazon托管策略,以便向您的员工授予他们所需的权限。这些策略已在您的账户中提供,并由 Amazon 维护和更新。有关更多信息,请参阅 IAM 用户指南中的开始使用 Amazon 托管策略中的权限

  • 授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 IAM 用户指南 中的授予最低权限

  • 为敏感操作启用 MFA – 为了提高安全性,要求 IAM 用户使用多重验证 (MFA) 访问敏感资源或 API 操作。有关更多信息,请参阅《IAM 用户指南》中的在 Amazon 中使用多重身份验证 (MFA)

  • 使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅 。IAM JSON 策略元素:Condition中的IAM 用户指南.

使用卫兵控制台

要访问AmazonGuardDuty 控制台,您必须拥有一组最低的权限。这些权限必须允许您列出和查看有关您的 Amazon Web Services 账户 . 如果您创建的基于身份的策略比所需的最低权限更严格,则无法为具有该策略的实体(IAM 用户或角色)正常运行控制台。

对于只需要调用 Amazon CLI 或 Amazon API 的用户,无需为其提供最低控制台权限。相反,只允许访问与您尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍可使用 GuardDuty 控制台,还请将 GuardDutyConsoleAccess或者ReadOnly Amazon托管策略添加到实体。有关更多信息,请参阅 IAM 用户指南 中的为用户添加权限

启用 GuardDuty 所需的权限

本节介绍各种 IAM 身份 (用户、组和角色) 通过控制台或以编程方式 (使用 GuardReservice API 或AmazonCLI)。

要授予启用 GuardReservice 所需的权限,请将以下策略附加到 IAM 用户、组或角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::123456789012:role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty", "Condition": { "StringLike": { "iam:AWSServiceName": "guardduty.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::1234567890123:role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty" } ] }

允许用户查看他们自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管策略。此策略包括在控制台上完成此操作或者以编程方式使用 Amazon CLI 或 Amazon API 所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

自定义 IAM 策略,以便向 GuardDuty 授予只读访问权限

要向 GuardDuty 授予只读访问权限,您可以在AmazonGuardDutyReadOnlyAccess托管策略。

要创建自定义策略以向 IAM 用户、角色或组授予对 GuardDuty service 的只读访问权限,您可以使用以下语句:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:ListMembers", "guardduty:GetMembers", "guardduty:ListInvitations", "guardduty:ListDetectors", "guardduty:GetDetector", "guardduty:ListFindings", "guardduty:GetFindings", "guardduty:ListIPSets", "guardduty:GetIPSet", "guardduty:ListThreatIntelSets", "guardduty:GetThreatIntelSet", "guardduty:GetMasterAccount", "guardduty:GetInvitationsCount", "guardduty:GetFindingsStatistics" ], "Resource": "*" } ] }

拒绝访问 GuardDuty 调查结果

您可以使用以下策略拒绝 IAM 用户、角色或组对 GuardDuty 结果的访问权:用户无法查看结果或结果的有关详情,但它们可以访问所有其他 GuardReservice 操作:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:CreateDetector", "guardduty:DeleteDetector", "guardduty:UpdateDetector", "guardduty:GetDetector", "guardduty:ListDetectors", "guardduty:CreateIPSet", "guardduty:DeleteIPSet", "guardduty:UpdateIPSet", "guardduty:GetIPSet", "guardduty:ListIPSets", "guardduty:CreateThreatIntelSet", "guardduty:DeleteThreatIntelSet", "guardduty:UpdateThreatIntelSet", "guardduty:GetThreatIntelSet", "guardduty:ListThreatIntelSets", "guardduty:ArchiveFindings", "guardduty:UnarchiveFindings", "guardduty:CreateSampleFindings", "guardduty:CreateMembers", "guardduty:InviteMembers", "guardduty:GetMembers", "guardduty:DeleteMembers", "guardduty:DisassociateMembers", "guardduty:StartMonitoringMembers", "guardduty:StopMonitoringMembers", "guardduty:ListMembers", "guardduty:GetMasterAccount", "guardduty:DisassociateFromMasterAccount", "guardduty:AcceptInvitation", "guardduty:ListInvitations", "guardduty:GetInvitationsCount", "guardduty:DeclineInvitations", "guardduty:DeleteInvitations" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::123456789123:role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty", "Condition": { "StringLike": { "iam:AWSServiceName": "guardduty.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::123456789123:role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty" } ] }

使用自定义 IAM 策略限制对 GuardDuty 资源的访问权限

要根据探测器 ID 定义用户对 GuardDuty 的访问权,您可以使用所有GuardDuty 操作在您的自定义 IAM 策略中,以下操作:

  • guardduty:CreateDetector

  • guardduty:DeclineInvitations

  • guardduty:DeleteInvitations

  • guardduty:GetInvitationsCount

  • guardduty:ListDetectors

  • guardduty:ListInvitations

在 IAM 策略中使用以下操作,根据 IPSet ID 和 ThreatIntelSet ID 定义用户对 GuardDuty service 的访问权限:

  • guardduty:DeleteIPSet

  • guardduty:DeleteThreatIntelSet

  • guardduty:GetIPSet

  • guardduty:GetThreatIntelSet

  • guardduty:UpdateIPSet

  • guardduty:UpdateThreatIntelSet

以下示例说明如何使用之前的一些操作来创建策略:

  • 此策略允许用户运行guardduty:UpdateDetector操作中使用 ID 为 1234567 的探测器:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:UpdateDetector", ], "Resource": "arn:aws:guardduty:us-east-1:012345678910:detector/1234567" } ] }
  • 此策略允许用户运行guardduty:UpdateIPSet操作中使用探测器 ID 1234567 和 IPSet ID 为 000000 的 IPSet:

    注意

    请确保用户具有访问 GuardReservice 中的可信 IP 列表和威胁列表所需的权限。有关更多信息,请参阅上传可信 IP 列表和威胁列表所需的权限

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:UpdateIPSet", ], "Resource": "arn:aws:guardduty:us-east-1:012345678910:detector/1234567/ipset/000000" } ] }
  • 此策略允许用户运行guardduty:UpdateIPSet操作,在 us-east-1 区域中使用任意探测器 ID 和 IPSet ID 000000:

    注意

    请确保用户具有访问 GuardReservice 中的可信 IP 列表和威胁列表所需的权限。有关更多信息,请参阅上传可信 IP 列表和威胁列表所需的权限

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:UpdateIPSet", ], "Resource": "arn:aws:guardduty:us-east-1:012345678910:detector/*/ipset/000000" } ] }
  • 此策略允许用户运行guardduty:UpdateIPSet操作,请使用探测器 ID 1234567 和 ID 在 us-east-1 区域中的任意 IPSet ID:

    注意

    请确保用户具有访问 GuardReservice 中的可信 IP 列表和威胁列表所需的权限。有关更多信息,请参阅上传可信 IP 列表和威胁列表所需的权限

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "guardduty:UpdateIPSet", ], "Resource": "arn:aws:guardduty:us-east-1:012345678910:detector/1234567/ipset/*" } ] }