View a markdown version of this page

AWSSupport-ValidateFSxWindowsADConfig - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-ValidateFSxWindowsADConfig

描述

AWSSupport-ValidateFSxWindowsADConfig运行手册用于验证适用于 Windows 文件服务器的 Amazon FSx 的自管理 Active Directory (AD) 配置

如何工作?

该运行AWSSupport-ValidateFSxWindowsADConfig手册在亚马逊 FSx 子网上启动的临时亚马逊弹性计算云 (亚马逊 EC2) Windows 实例上执行亚马逊 FSx 验证脚本。该脚本执行多项检查,以验证与自我管理 AD/DNS 服务器的网络连接以及 Amazon FSx 服务账户的权限。该运行手册可以验证适用于Windows文件服务器的Amazon FSx失败或配置错误,或者使用自我管理的AD为Windows文件服务器创建新的亚马逊 FSx。

默认情况下,该运行手册在亚马逊 FSx 子网 CloudFormation 上创建亚马逊 EC2 Windows 实例、 AWS Systems Manager AWS Identity and Access Management (SSM) 访问安全组、(IAM) 角色和策略。如果您想在现有 Amazon EC2 实例上运行脚本,请在参数中提供 ID InstanceId。成功执行后,它会删除 CloudFormation 资源。但是,要保留资源,请将RetainCloudFormationStack参数设置为true

该 CloudFormation 模板代表您创建一个 IAM 角色,该角色具有连接到 Amazon EC2 实例以运行 Amazon FSx 验证脚本所需的权限。要为临时实例指定现有 IAM 实例配置文件,请使用InstanceProfileName参数。关联的 IAM 角色必须包含以下权限:

  • ec2:DescribeSubnets以及ec2:DescribeVpcs权限和亚马逊管理政策AmazonSSMManagedInstanceCore

  • 通过调用 GetSecretValue API 从系统管理器获取亚马逊 FSx 服务账户用户名和密码的权限。

  • 允许将对象放入亚马逊简单存储服务 (Amazon S3) 存储桶中以进行脚本输出。

先决条件

创建临时 Amazon EC2 实例(或InstanceId参数中提供的现有实例)的子网必须允许访问 AWS Systems Manager AWS Secrets Manager、和 Amazon S3 终端节点,才能使用 SSM Run Command 运行AmazonFSxADValidation脚本。

AWS Secrets Manager 设置

验证脚本通过运行时调用 Secrets Manager 来检索亚马逊 FSx 服务账户的用户名和密码,从而连接到微软 AD 域。按照创建密钥中的步骤创建新的 AWS Secrets Manager 密钥管理器密钥。确保使用以下格式 key/value 对存储用户名和密码{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}"。有关保护密钥访问权限的信息,请参阅身份验证和访问控制。 AWS Secrets Manager

有关该工具的更多信息,请参阅README.md文件中的TROUBLESHOOTING.mdAmazonFSxADValidation文件。

运行手册的执行

使用亚马逊 FSx ID 或 AD 参数执行运行手册。以下是运行手册的工作流程:

  • 从亚马逊 FSx ID 获取参数或使用输入的 AD 参数。

  • 在 Amazon FSx 子网上创建临时验证 Amazon EC2 Windows 实例、用于 SSM 访问的安全组、IAM 角色和策略(有条件的)。 CloudFormation如果指定了该InstanceId参数,则使用该参数。

  • 在亚马逊 FSx 主子网中的目标 Amazon EC2 实例上下载并执行验证脚本。

  • 在自动化输出中提供 AD 验证结果代码。此外,完整的脚本输出将上传到 Amazon S3 存储桶。

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

Windows

参数

所需的 IAM 权限

AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。

  • cloudformation:CreateStack

  • cloudformation:DeleteStack

  • cloudformation:DescribeStacks

  • cloudformation:DescribeStackResources

  • cloudformation:DescribeStackEvents

  • ec2:CreateTags

  • ec2:RunInstances

  • ec2:TerminateInstances

  • ec2:CreateLaunchTemplate

  • ec2:DeleteLaunchTemplate

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeLaunchTemplates

  • ec2:DescribeLaunchTemplateVersions

  • ec2:CreateSecurityGroup

  • ec2:DeleteSecurityGroup

  • ec2:RevokeSecurityGroupEgress

  • ec2:AuthorizeSecurityGroupEgress

  • iam:CreateRole

  • iam:CreateInstanceProfile

  • iam:GetInstanceProfile

  • iam:getRolePolicy

  • iam:DeleteRole

  • iam:DeleteInstanceProfile

  • iam:AddRoleToInstanceProfile

  • iam:RemoveRoleFromInstanceProfile

  • iam:AttachRolePolicy

  • iam:DetachRolePolicy

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:GetRole

  • iam:PassRole

  • ssm:SendCommand

  • ssm:StartAutomationExecution

  • ssm:DescribeInstanceInformation

  • ssm:DescribeAutomationExecutions

  • ssm:GetDocument

  • ssm:GetAutomationExecution

  • ssm:DescribeAutomationStepExecutions

  • ssm:ListCommandInvocations

  • ssm:GetParameters

  • ssm:ListCommands

  • ssm:GetCommandInvocation

  • fsx:DescribeFileSystems

  • ds:DescribeDirectories

  • s3:GetEncryptionConfiguration

  • s3:GetBucketPublicAccessBlock

  • s3:GetAccountPublicAccessBlock

  • s3:GetBucketPolicyStatus

  • s3:GetBucketAcl

  • s3:GetBucketLocation

自动化承担角色的 IAM policy 示例

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowDescribe", "Effect": "Allow", "Action": [ "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ssm:DescribeInstanceInformation", "ssm:DescribeAutomationExecutions", "ssm:DescribeAutomationStepExecutions", "fsx:DescribeFileSystems", "ds:DescribeDirectories" ], "Resource": "*" }, { "Sid": "CloudFormation", "Effect": "Allow", "Action": [ "cloudformation:DescribeStacks", "cloudformation:DescribeStackResources", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "arn:*:cloudformation:*:*:stack/AWSSupport-ValidateFSxWindowsADConfig-*" }, { "Sid": "AllowCreateLaunchTemplate", "Effect": "Allow", "Action": [ "ec2:CreateLaunchTemplate", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:launch-template/*" ] }, { "Sid": "AllowEC2RunInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:launch-template/*" ] }, { "Sid": "AllowEC2RunInstancesWithTags", "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid": "EC2SecurityGroup", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup", "ec2:RevokeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupEgress", "ec2:CreateTags" ], "Resource": [ "arn:*:ec2:*:*:security-group/*", "arn:*:ec2:*:*:vpc/*" ] }, { "Sid": "EC2Remove", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:DeleteLaunchTemplate", "ec2:DeleteSecurityGroup" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:launch-template/*", "arn:*:ec2:*:*:security-group/*" ] }, { "Sid": "IAMInstanceProfile", "Effect": "Allow", "Action": [ "iam:CreateInstanceProfile", "iam:DeleteInstanceProfile", "iam:GetInstanceProfile", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "arn:*:iam::*:instance-profile/*" }, { "Sid": "IAM", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:DeleteRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:getRolePolicy", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:GetRole", "iam:TagRole" ], "Resource": "arn:*:iam::*:role/*" }, { "Sid": "SSM", "Effect": "Allow", "Action": [ "ssm:StartAutomationExecution", "ssm:GetDocument", "ssm:GetAutomationExecution", "ssm:ListCommandInvocations", "ssm:GetParameters", "ssm:ListCommands", "ssm:GetCommandInvocation" ], "Resource": "*" }, { "Sid": "SSMSendCommand", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": "arn:aws:ssm:*:*:document/AWS-RunPowerShellScript" }, { "Sid": "SSMSendCommandOnlyFsxInstance", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/CreatedBy": [ "AWSSupport-ValidateFSxWindowsADConfig" ] } } }, { "Sid": "AllowPassRoleToEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:*:iam::*:role/AWSSupport-ValidateFSxWindowsADConfig-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration", "s3:GetBucketPublicAccessBlock", "s3:GetAccountPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }

说明

按照这些步骤对自动化进行配置:

  1. 导航到 AWSSupport-ValidateFSxWindowsADConfig “系统管理器” 下的 “文档”。

  2. 选择 Execute automation(执行自动化)。

  3. 要使用现有失败或配置错误的 Amazon FSx 来验证自建广告,请输入以下参数:

    • AutomationAssumeRole (可选):

      (IAM) 角色的亚马逊资源名称 AWS Identity and Access Management (ARN),允许系统管理员自动化代表您执行操作。如果未指定任何角色,系统管理员自动化将使用启动本运行手册的用户的权限。

    • FSxId (视情况而定):

      适用于 Windows 的亚马逊 FSx 文件服务器 ID。这是验证现有失败或配置错误的 Amazon FSx 所必需的。

    • SecretArn (必填):

      包含亚马逊 FSx 服务账户用户名和密码的 Secrets Manager 密钥的 ARN。确保使用以下格式 key/value 对存储用户名和密码{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}。 CloudFormation 堆栈创建具有对此 ARN 执行权限GetSecretValue的验证实例。

    • FSxSecurityGroupId (必填):

      适用于 Windows 文件服务器的亚马逊 FSx 的安全组 ID。

    • BucketName (必填):

      用于将验证结果上传到的 Amazon S3 存储桶。确保存储桶配置了服务器端加密 (SSE),并且存储桶策略不会向不需要访问日志的各方授予不必要的 read/write 权限。还要确保亚马逊 EC2 Windows 实例具有对亚马逊 S3 存储桶的必要访问权限。

    输入参数由实例 ID、 IAM 角色、S3 存储桶、密钥 ARN 和 FSx 配置等字段构成。
  4. 要验证新的 Amazon FSx 创建的自管理 AD 配置,请输入以下参数:

    • AutomationAssumeRole (可选):

      (IAM) 角色的亚马逊资源名称 AWS Identity and Access Management (ARN),允许系统管理员自动化代表您执行操作。如果未指定任何角色,系统管理员自动化将使用启动本运行手册的用户的权限。

    • SecretArn (必填):

      包含亚马逊 FSx 服务账户用户名和密码的 Secrets Manager 密钥的 ARN。确保使用以下格式 key/value 对存储用户名和密码{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}。 CloudFormation 堆栈创建具有对此 ARN 执行权限GetSecretValue的验证实例。

    • FSxSecurityGroupId (必填):

      适用于 Windows 文件服务器的亚马逊 FSx 的安全组 ID。

    • BucketName (必填):

      用于将验证结果上传到的 Amazon S3 存储桶。确保存储桶配置了服务器端加密 (SSE),并且存储桶策略不会向不需要访问日志的各方授予不必要的 read/write 权限。还要确保亚马逊 EC2 Windows 实例具有对亚马逊 S3 存储桶的必要访问权限。

    • FSxPreferredSubnetId(视情况而定):

      适用于 Windows 文件服务器的亚马逊 FSx 首选子网。

    • DomainName (视情况而定):

      您自行管理的微软 AD 域的完全限定域名。

    • DnsIpAddresses (视情况而定):

      自我管理的 AD 域中最多两个 DNS 服务器或域控制器 IP 地址的列表。对于最多两个 IP,请用逗号分隔输入。

    • FSxAdminsGroup (视情况而定):

      适用于 Windows 文件服务器的 Amazon FSx 委托文件系统管理员组。默认情况下,该名称为 Domain Admins

    • FSxOrganizationalUnit(视情况而定):

      您要加入文件系统的组织单位 (OU)。提供 OU 的可分辨路径名。示例:OU=org,DC=example,DC=com

    Amazon FSx 包括域名、子网 ID 和管理组的配置参数。
  5. 选择执行

  6. 自动化启动。

  7. 文档将执行以下步骤:

    • CheckBucketPublicStatus(AWS: ExecuteScript):

      检查目标 Amazon S3 存储桶是否可能授予对其对象的读 and/or 写公共访问权限。

    • BranchOnInputParameters(aws: branch):

      基于提供的输入参数(例如亚马逊 FSx ID 或亚马逊 FSx 参数)进行分支。

    • AssertFileSystemTypeIsWindows(aws: assertAwsResourceProperty):

      如果提供了亚马逊 FSx ID,则验证文件系统类型为适用于 Windows 文件服务器的亚马逊 FSx。

    • GetValidationInputs(AWS: ExecuteScript):

      返回 CloudFormation 模板创建亚马逊 EC2 实例所需的自管理微软 AD 配置。

    • BranchOnInstanceId (aws: branch):

      在提供的输入上分支InstanceId。如果提供,InstanceId则验证脚本通过自动化在目标 Amazon EC2 实例上运行step:RunValidationScript

    • CreateEC2InstanceStack(AWS: CreateStack):

      使用执行AmazonFSxADValidation工具的 CloudFormation 位置在首选子网中创建 Amazon EC2 实例

    • DescribeStackResources(aws: executeAwsApi):

      描述用于获取临时 Amazon EC2 实例 ID 的 CloudFormation 堆栈。

    • WaitForEC2InstanceToBeManaged(aws: 等等ForAwsResourceProperty):

      等待 Amazon EC2 实例由系统管理器管理,然后使用 SSM 运行命令运行验证脚本。

    • GetAmazonFSxADValidationAttachment(aws: executeAwsApi):

      从运行手册附件中获取AmazonFSxADValidation工具网址。

    • RunValidationScript(AWS: runCommand):

      在临时 Amazon EC2 实例上运行该AmazonFSxADValidation工具,并将结果存储在BucketName参数中指定的 Amazon S3 存储桶中。

    • DescribeErrorsFromStackEvents(AWS: ExecuteScript):

      描述运行手册无法创建 CloudFormation 堆栈时的堆栈事件。

    • BranchOnRetainCloudFormationStack(aws: branch):

      RetainCloudFormationStackInstanceId参数上分支以确定是否应删除 CloudFormation 堆栈。

    • DeleteCloudFormationStack(AWS: DeleteStack):

      删除 CloudFormation 堆栈。

  8. 完成后,查看 “输出” 部分以了解执行结果:

    输出部分显示验证脚本结果,但有一个 InvalidCredentials 错误。

    运行手册会将验证脚本的执行结果上传到 Amazon S3 存储桶。

参考

Systems Manager Automation

AWS 服务文档