Amazon Fraud Detector 基于身份的策略示例 - Amazon Fraud Detector

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

Amazon Fraud Detector 基于身份的策略示例

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

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

策略最佳实践

基于身份的策略决定了某人是否可以在您的账户中创建、访问或删除 Amazon Fraud Detector 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时,请遵循以下指南和建议:

  • 开始使用 AWS 托管策略并转向最低权限权限 — 要开始向用户和工作负载授予权限,请使用为许多常见用例授予权限的AWS 托管策略。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管式策略工作职能的AWS 托管式策略

  • 应用最低权限:在使用 IAM 策略设置权限时,请仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用 IAM 应用权限的更多信息,请参阅《IAM 用户指南》中的 IAM 中的策略和权限

  • 使用 IAM 策略中的条件进一步限制访问权限:您可以向策略添加条件来限制对操作和资源的访问。例如,您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定的方式使用的,则也可以使用条件来授予对服务操作的访问权限 AWS 服务,例如 AWS CloudFormation。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件

  • 使用 IAM Access Analyzer 验证您的 IAM 策略,以确保权限的安全性和功能性 – IAM Access Analyzer 会验证新策略和现有策略,以确保策略符合 IAM 策略语言(JSON)和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议,以帮助您制定安全且功能性强的策略。有关更多信息,请参阅《IAM 用户指南》中的使用 IAM Access Analyzer 验证策略

  • 需要多重身份验证 (MFA)-如果 AWS 账户您的场景需要 IAM 用户或根用户,请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA,请将 MFA 条件添加到您的策略中。有关更多信息,请参阅《IAM 用户指南》中的使用 MFA 保护 API 访问

有关 IAM 中的最佳实操的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

AWS 托管(预定义)的 Amazon Fraud Detector 政策

AWS 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 AWS。这些 AWS 托管策略为常见用例授予必要的权限,这样您就可以不必调查需要哪些权限。有关更多信息,请参阅《AWS Identity and Access Management 管理用户指南》中的 AWS 托管策略

以下 AWS 托管政策仅适用于 Amazon Fraud Detector,您可以将其附加给账户中的用户:

AmazonFraudDetectorFullAccess: 授予对 Amazon Fraud Detector 资源、操作和支持的操作的完全访问权限,包括:

  • 列出并描述 Amazon A SageMaker I 中的所有模型终端节点

  • 列出账户中的所有 IAM 角色

  • 列出所有 Amazon S3 存储桶

  • 允许 IAM Pass 角色将角色传递给 Amazon Fraud Detector

此策略不提供不受限制的 S3 访问权限。如果您需要将模型训练数据集上传到 S3,则还需要AmazonS3FullAccess托管策略(或范围缩小的自定义 Amazon S3 访问策略)。

您可以通过登录 IAM 控制台并按策略名称进行搜索来查看策略的权限。您还可以创建自己的自定义 IAM 策略,根据需要授予 Amazon Fraud Detector 操作和资源的权限。您可以将这些自定义策略附加到需要它们的用户或组。

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

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上或使用 AWS CLI 或 AWS 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": "*" } ] }

允许完全访问亚马逊 Fraud Detector 资源

以下示例允许用户 AWS 账户 完全访问所有 Amazon Fraud Detector 资源和操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "frauddetector:*" ], "Resource": "*" } ] }

允许对 Amazon Fraud Detector 资源进行只读访问

在本示例中,您授予用户对您的 Amazon Fraud Detector 资源的 AWS 账户 只读访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "frauddetector:GetEventTypes", "frauddetector:BatchGetVariable", "frauddetector:DescribeDetector", "frauddetector:GetModelVersion", "frauddetector:GetEventPrediction", "frauddetector:GetExternalModels", "frauddetector:GetLabels", "frauddetector:GetVariables", "frauddetector:GetDetectors", "frauddetector:GetRules", "frauddetector:ListTagsForResource", "frauddetector:GetKMSEncryptionKey", "frauddetector:DescribeModelVersions", "frauddetector:GetDetectorVersion", "frauddetector:GetPrediction", "frauddetector:GetOutcomes", "frauddetector:GetEntityTypes", "frauddetector:GetModels" ], "Resource": "*" } ] }

允许访问特定资源

在此资源级策略示例中,您可以向用户授予 AWS 账户 访问除一个特定 Detector 资源之外的所有操作和资源的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "frauddetector:*" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "frauddetector:*Detector" ], "Resource": "arn:${Partition}:frauddetector:${Region}:${Account}:detector/${detector-name}" } ] }

使用双模式 API 时允许访问特定资源

Amazon Fraud Detector 提供双模式 APIs ,可以同时使用 “列表” 和 “描述” 操作。在不带任何参数的情况下调用双模式 API 时,会返回与您的关联的指定资源的列表 AWS 账户。使用参数调用双模式 API 时,会返回指定资源的详细信息。资源可以是模型、变量、事件类型或实体类型。

双模式 APIs 支持 IAM 策略中的资源级权限。但是,只有在请求中提供一个或多个参数时,才会应用资源级别权限。例如,如果用户调用 GetVariablesAPI 并提供变量名称,并且如果变量资源或变量名称附加了 IAM 拒绝策略,则用户将收到AccessDeniedException错误。如果用户调用 GetVariables API 但未指定变量名,则会返回所有变量,这可能会导致信息泄露。

要仅允许用户查看特定资源的详细信息,请在 IAM 拒绝NotResource策略中使用 IAM 策略元素。将此策略元素添加到 IAM 拒绝策略后,用户只能查看NotResource区块中指定的资源的详细信息。有关更多信息,请参阅 IAM 用户指南 NotResource中的 IAM JSON 策略元素:

以下示例策略允许用户访问 Amazon Fraud Detector 的所有资源。但是,NotResource策略元素用于将 GetVariablesAPI 调用限制为仅限前缀为user*job_*、和var*的变量名。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "frauddetector:*", "Resource": "*" }, { "Effect": "Deny", "Action": "frauddetector:GetVariables", "NotResource": [ "arn:aws:frauddetector:*:*:variable/user*", "arn:aws:frauddetector:*:*:variable/job_*", "arn:aws:frauddetector:*:*:variable/var*" ] } ] }

响应

对于此示例策略,响应表现出以下行为:

  • 不包含变量名的 GetVariables 调用会导致AccessDeniedException错误,因为该请求映射到 Deny 语句。

  • 如果 GetVariables 调用包含不允许的变量名,则会导致AccessDeniedException错误,因为变量名未映射到NotResource块中的变量名。例如,使用变量名的 GetVariables 调用会email_address导致AccessDeniedException错误。

  • 如果 GetVariables 调用包含与NotResource块中的变量名相匹配的变量名,则按预期返回。例如,包含变量名的 GetVariables 调用job_cpa会返回job_cpa变量的详细信息。

根据标签限制访问权限

此示例策略演示了如何根据资源标签限制对 Amazon Fraud Detector 的访问权限。此示例假设:

  • 在你的游戏中, AWS 账户 你定义了两个不同的小组,分别是 Team1 和 Team2

  • 您已经创建了四个探测器

  • 你想允许 Team1 的成员在 2 个探测器上进行 API 调用

  • 你想允许 Team2 的成员在其他 2 个探测器上进行 API 调用

控制对 API 调用的访问(示例)
  1. 向 Team1 使用的探测器添加带有键Project和值A的标签。

  2. 向 Team2 使用的探测器添加带有键Project和值B的标签。

  3. 创建一个 IAM 策略,其ResourceTag条件是拒绝访问带有密钥Project和值的标签的探测器B,并将该策略附加到 Team1。

  4. 创建一个 IAM 策略,其ResourceTag条件是拒绝访问带有密钥Project和值的标签的探测器A,并将该策略附加到 Team2。

以下是一个政策示例,该政策拒绝对任何带有密钥为Project且值为的标签的 Amazon Fraud Detector 资源执行特定操作B

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "frauddetector:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "frauddetector:CreateModel", "frauddetector:CancelBatchPredictionJob", "frauddetector:CreateBatchPredictionJob", "frauddetector:DeleteBatchPredictionJob", "frauddetector:DeleteDetector" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "B" } } } ] }