AWS Application Discovery Service 基于身份的策略示例 - AWS Application Discovery

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

AWS Application Discovery Service 基于身份的策略示例

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

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

策略最佳实践

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

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

  • 应用最低权限权限-使用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中的安全最佳实践

授予对 Application Discovery 服务的完全访问权限

AWSApplicationDiscoveryServiceFullAccess 托管策略授予IAM用户帐户访问 Application Discovery Service 和 Migration Hub 的权限APIs。

将此策略附加到其帐户的IAM用户可以配置 Application Discovery Service、启动和停止代理、启动和停止无代理发现,以及从 Discovery Ser AWS vice 数据库中查询数据。有关此策略的更多信息,请参阅“AWS 的托管策略 AWS Application Discovery Service”。

例 AWSApplicationDiscoveryServiceFullAccess政策
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "mgh:*", "discovery:*" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "iam:GetRole" ], "Effect": "Allow", "Resource": "*" } ] }

向发现代理授予访问权限

AWSApplicationDiscoveryAgentAccess 托管策略授予应用程序发现代理注册和与 Application Discovery Service 通信的权限。有关此策略的更多信息,请参阅“AWS 的托管策略 AWS Application Discovery Service”。

将此策略附加到应用程序发现代理使用其凭据的任何用户。

此策略还授予用户访问 Arsenal 的权限。阿森纳是一项由管理和托管的代理服务 AWS。阿森纳将数据转发到云端的 Application Discovery Service。

例 AWSApplicationDiscoveryAgentAccess政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "arsenal:RegisterOnPremisesAgent" ], "Resource": "*" } ] }

授予代理数据收集权限

ApplicationDiscoveryServiceContinuousExportServiceRolePolicy 托管策略 AWS Application Discovery Service 允许创建 Amazon Data Firehose 流,以转换应用程序发现服务代理收集的数据并将其传输到您 AWS 账户中的 Amazon S3 存储桶。

此外,此策略还会创建一个 AWS Glue 数据目录,其中包含一个名为的新数据库application_discovery_service_database和用于映射代理收集的数据的表架构。

有关使用此策略的信息,请参阅AWS 的托管策略 AWS Application Discovery Service

例 ApplicationDiscoveryServiceContinuousExportServiceRolePolicy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "glue:CreateDatabase", "glue:UpdateDatabase", "glue:CreateTable", "glue:UpdateTable", "firehose:CreateDeliveryStream", "firehose:DescribeDeliveryStream", "logs:CreateLogGroup" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "firehose:DeleteDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:UpdateDestination" ], "Effect": "Allow", "Resource": "arn:aws:firehose:*:*:deliverystream/aws-application-discovery-service*" }, { "Action": [ "s3:CreateBucket", "s3:ListBucket", "s3:PutBucketLogging", "s3:PutEncryptionConfiguration" ], "Effect": "Allow", "Resource": "arn:aws:s3:::aws-application-discovery-service*" }, { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::aws-application-discovery-service*/*" }, { "Action": [ "logs:CreateLogStream", "logs:PutRetentionPolicy" ], "Effect": "Allow", "Resource": "arn:aws:logs:*:*:log-group:/aws/application-discovery-service/firehose*" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSApplicationDiscoveryServiceFirehose", "Condition": { "StringLike": { "iam:PassedToService": "firehose.amazonaws.com" } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/service-role/AWSApplicationDiscoveryServiceFirehose", "Condition": { "StringLike": { "iam:PassedToService": "firehose.amazonaws.com" } } } ] }

授予数据探索权限

该 AWSDiscoveryContinuousExportFirehosePolicy 政策是在 Amazon Athena 中使用数据探索功能所必需的。它允许 Amazon Data Firehose 将从 Application Discovery Service 收集的数据写入亚马逊 S3。有关使用此策略的信息,请参阅创建 AWSApplicationDiscoveryServiceFirehose 角色

例 AWSDiscoveryContinuousExportFirehosePolicy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTableVersions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-application-discovery-service-*", "arn:aws:s3:::aws-application-discovery-service-*/*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/application-discovery-service/firehose:log-stream:*" ] } ] }

授予使用 Migration Hub 控制台网络图的权限

要在创建允许或拒绝访问 Application Discovery Service 或 Migration Hub 的基于身份的策略时授予对 AWS Migration Hub 控制台网络图的访问权限,您可能需要将discovery:GetNetworkConnectionGraph操作添加到策略中。

如果策略符合以下两个条件,则必须在新策略中使用该discovery:GetNetworkConnectionGraph操作或更新较旧的策略:

  • 该策略允许或拒绝访问 Application Discovery Service 或 Migration Hub。

  • 该策略使用另一种特定的发现操作来授予访问权限,比如 “discovery:action-name而不是” discovery:*

以下示例说明如何在IAM策略中使用discovery:GetNetworkConnectionGraph操作。

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

有关 Migration Hub 网络图的信息,请参阅在 Migration Hub 中查看网络连接