AWSSupport-ValidateFSxWindowsADConfig - AWS Systems Manager 自動化 Runbook 參考

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWSSupport-ValidateFSxWindowsADConfig

Description

AWSSupport-ValidateFSxWindowsADConfig Runbook 用於驗證 Amazon FSx for Windows File Server 的自我管理 Active Directory (AD) 組態

如何運作?

Runbook AWSSupport-ValidateFSxWindowsADConfig會在 Runbook 在 Amazon FSx 子網路上啟動的暫時 Amazon Elastic Compute Cloud (Amazon EC2) Windows 執行個體上執行 Amazon FSx 驗證指令碼。指令碼會執行多次檢查,以驗證與自我管理 AD/DNS 伺服器的網路連線,以及 Amazon FSx 服務帳戶的許可。Runbook 可以驗證失敗或設定錯誤的 Amazon FSx for Windows File Server,或使用自我管理 AD 建立新的 Amazon FSx for Windows File Server。

根據預設, Runbook 會在 Amazon FSx 子網路上使用 建立 Amazon EC2 Windows 執行個體、 AWS Systems Manager (SSM) 存取的安全群組、 AWS Identity and Access Management (IAM) 角色和政策。 AWS CloudFormation FSx 如果您想要在現有的 Amazon EC2 執行個體上執行指令碼,請在 參數中提供 IDInstanceId。成功執行時,它會刪除 CloudFormation 資源。不過,若要保留資源,請將 RetainCloudFormationStack 參數設定為 true

CloudFormation 範本會代表您建立具有必要許可的 IAM 角色,以連接至 Amazon EC2 執行個體來執行 Amazon FSx 驗證指令碼。若要指定暫時執行個體的現有 IAM 執行個體描述檔,請使用 InstanceProfileName 參數。相關聯的 IAM 角色必須包含下列許可:

  • ec2:DescribeSubnetsec2:DescribeVpcs許可以及 Amazon 受管政策 AmazonSSMManagedInstanceCore

  • 呼叫 GetSecretValue API,從 Systems Manager 取得 Amazon FSx 服務帳戶使用者名稱和密碼的許可。

  • 將物件放入指令碼輸出的 Amazon Simple Storage Service (Amazon S3) 儲存貯體的許可。

先決條件

建立暫時 Amazon EC2 執行個體 (或 InstanceId 參數中提供的現有執行個體) 的子網路必須允許存取 AWS Systems Manager、 和 Amazon S3 端點 AWS Secrets Manager,才能使用 SSM Run Command 執行AmazonFSxADValidation指令碼。

AWS Secrets Manager 設定

驗證指令碼透過擷取執行時間呼叫 Secrets Manager 的 Amazon FSx 服務帳戶使用者名稱和密碼,連線至 Microsoft AD 網域。請依照建立 AWS Secrets Manager 秘密中的步驟,建立新的 Secrets Manager 秘密。請確定使用者名稱和密碼是使用格式為 的金鑰/值對來存放{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}"。如需保護秘密存取的相關資訊,請參閱 的身分驗證和存取控制 AWS Secrets Manager

如需工具的詳細資訊,請參閱 AmazonFSxADValidation README.md 檔案中的 TROUBLESHOOTING.md和 檔案。

Runbook 執行

使用 Amazon FSx ID 或 AD 參數執行 Runbook。以下是 Runbook 工作流程:

  • 從 Amazon FSx ID 取得參數,或使用輸入 AD 參數。

  • 使用 CloudFormation 在 Amazon FSx 子網路、SSM 存取的安全群組、IAM 角色和政策 (條件式) 上建立臨時驗證 Amazon EC2 Windows 執行個體。 FSx 如果指定 參數,則會使用該InstanceId參數。

  • 在 Amazon FSx 主要子網路中的目標 Amazon EC2 執行個體上下載並執行驗證指令碼。 FSx

  • 在自動化輸出中提供 AD 驗證結果代碼。此外,完整的指令碼輸出會上傳到 Amazon S3 儲存貯體。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

Amazon

平台

Windows

參數

必要的 IAM 許可

AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。

  • 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 政策範例

{ "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. 在文件下的 Systems Manager AWSSupport-ValidateFSxWindowsADConfig中導覽至 。

  2. 選擇 Execute automation (執行自動化)。

  3. 若要使用現有失敗或設定錯誤的 Amazon FSx 驗證自我管理 AD,請輸入下列參數:

    • AutomationAssumeRole (選用):

      (IAM) 角色的 Amazon Resource Name AWS Identity and Access Management (ARN),允許 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。

    • FSxId (條件式):

      Amazon FSx for Windows File Server ID。這是驗證現有失敗或設定錯誤 Amazon FSx 的必要項目。

    • SecretArn (必要):

      包含 Amazon FSx 服務帳戶使用者名稱和密碼之 Secrets Manager 秘密的 ARN。請確定使用者名稱和密碼是使用格式為 的金鑰/值對來存放{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}。CloudFormation 堆疊會建立具有GetSecretValue執行此 ARN 之許可的驗證執行個體。

    • FSxSecurityGroupId (必要):

      Amazon FSx for Windows File Server 的安全群組 ID。

    • BucketName (必要):

      要上傳驗證結果的 Amazon S3 儲存貯體。請確定儲存貯體已設定伺服器端加密 (SSE),且儲存貯體政策不會將不必要的讀取/寫入許可授予不需要存取日誌的各方。此外,請確定 Amazon EC2 Windows 執行個體具有 Amazon S3 儲存貯體的必要存取權。

    Input parameters form for AWS Systems Manager managed Windows Server EC2 instance validation.
  4. 若要驗證新 Amazon FSx 建立的自我管理 AD 組態,請輸入下列參數:

    • AutomationAssumeRole (選用):

      (IAM) 角色的 Amazon Resource Name AWS Identity and Access Management (ARN),允許 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。

    • SecretArn (必要):

      包含 Amazon FSx 服務帳戶使用者名稱和密碼之 Secrets Manager 秘密的 ARN。請確定使用者名稱和密碼是使用格式為 的金鑰/值對來存放{"username":"EXAMPLE-USER","password":"EXAMPLE-PASSWORD"}。CloudFormation 堆疊會建立具有GetSecretValue執行此 ARN 之許可的驗證執行個體。

    • FSxSecurityGroupId (必要):

      Amazon FSx for Windows File Server 的安全群組 ID。

    • BucketName (必要):

      要上傳驗證結果的 Amazon S3 儲存貯體。請確定儲存貯體已設定伺服器端加密 (SSE),且儲存貯體政策不會將不必要的讀取/寫入許可授予不需要存取日誌的各方。此外,請確定 Amazon EC2 Windows 執行個體具有 Amazon S3 儲存貯體的必要存取權。

    • FSxPreferredSubnetId (條件式):

      Amazon FSx for Windows File Server 偏好的子網路。

    • DomainName (條件式):

      自我管理 Microsoft AD 網域的完整網域名稱。

    • DnsIpAddresses (條件式):

      自我管理 AD 網域中最多兩個 DNS 伺服器或網域控制站 IP 地址的清單。針對最多兩個 IPs,輸入以逗號分隔的 IP。

    • FSxAdminsGroup (條件式):

      Amazon FSx for Windows File Server 委派檔案系統管理員群組。根據預設,此為 Domain Admins

    • FSxOrganizationalUnit (條件式):

      您要加入檔案系統的組織單位 (OU)。提供 OU 的辨別路徑名稱。範例:OU=org,DC=example,DC=com

    Form fields for configuring Amazon FSx for Windows File Server and related AWS 服務.
  5. 選取執行

  6. 自動化會啟動。

  7. 文件會執行下列步驟:

    • CheckBucketPublicStatus (aws:executeScript):

      檢查目標 Amazon S3 儲存貯體是否可能授予其物件的讀取和/或寫入公開存取權。

    • BranchOnInputParameters (aws:branch):

      所提供輸入參數上的分支,例如 Amazon FSx ID 或 Amazon FSx 參數。

    • AssertFileSystemTypeIsWindows (aws:assertAwsResourceProperty):

      如果提供 Amazon FSx ID, 會驗證檔案系統類型為 Amazon FSx for Windows File Server。

    • GetValidationInputs (aws:executeScript):

      傳回 CloudFormation 範本建立 Amazon EC2 執行個體所需的自我管理 Microsoft AD 組態。

    • BranchOnInstanceId (aws:branch):

      所提供輸入 上的分支InstanceId。如果InstanceId提供 ,驗證指令碼會從自動化 在目標 Amazon EC2 執行個體上執行step:RunValidationScript

    • CreateEC2InstanceStack (aws:createStack):

      使用 AmazonFSxADValidation工具的執行 AWS CloudFormation 位置,在偏好的子網路中建立 Amazon EC2 執行個體

    • DescribeStackResources (aws:executeAwsApi):

      描述 CloudFormation 堆疊以取得暫時 Amazon EC2 執行個體 ID。

    • WaitForEC2InstanceToBeManaged (aws:waitForAwsResourceProperty):

      等到 Systems Manager 管理 Amazon EC2 執行個體,才能使用 SSM Run Command 執行驗證指令碼。

    • GetAmazonFSxADValidationAttachment (aws:executeAwsApi):

      從 Runbook 附件取得AmazonFSxADValidation工具 URL。

    • RunValidationScript (aws:runCommand):

      在暫時 Amazon EC2 執行個體上執行AmazonFSxADValidation工具,並將結果存放在 BucketName 參數中指定的 Amazon S3 儲存貯體中。

    • DescribeErrorsFromStackEvents (aws:executeScript):

      如果 Runbook 無法建立堆疊,則說明 CloudFormation 堆疊事件。

    • BranchOnRetainCloudFormationStack (aws:branch):

      RetainCloudFormationStackInstanceId 參數上的分支,以判斷是否應刪除 CloudFormation 堆疊。

    • DeleteCloudFormationStack (aws:deleteStack):

      刪除 AWS CloudFormation 堆疊。

  8. 完成後,請檢閱輸出區段以取得執行結果:

    Output showing instance details, CloudFormation stack ID, and validation script results with errors.

    Runbook 會將驗證指令碼執行的結果上傳至 Amazon S3 儲存貯體。

參考

Systems Manager Automation

AWS 服務文件