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

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

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

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

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

策略最佳实践

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

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

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

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

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

  • 需要多因素身份验证 (MFA)-如果您的场景需要IAM用户或 root 用户 AWS 账户,请打开MFA以提高安全性。要要求MFA何时调用API操作,请在策略中添加MFA条件。有关更多信息,请参阅《IAM用户指南》中的配置MFA受保护的API访问权限

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

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

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

以下 AWS 您可以将托管政策附加到账户中的用户,该政策特定于 Amazon Fraud Detector:

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

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

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

  • 列出所有 Amazon S3 存储桶

  • 允许 IAM Pass Role 将角色传递给 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 资源进行只读访问

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

{ "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 账户 访问除一个特定的探测器资源之外的所有操作和资源。

{ "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错误消息。如果用户调用GetVariablesAPI但未指定变量名,则会返回所有变量,这可能会导致信息泄露。

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

以下示例策略允许用户访问 Amazon Fraud Detector 的所有资源。但是,p NotResource olicy 元素用于将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. 创建具有拒绝访问带有键Project和值标签的检测器的ResourceTag条件的IAM策略B,并将该策略附加到 Team1。

  4. 创建具有拒绝访问带有键Project和值标签的检测器的ResourceTag条件的IAM策略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" } } } ] }