{FSx}セルフマネージド Microsoft アクティブディレクトリでの Amazon FSx の使用

https://docs.aws.amazon.com/ja_jp/fsx/latest/WindowsGuide/self-managed-AD.html
https://dev.classmethod.jp/articles/attention-to-use-fsx-ad-validation-tool/
https://docs.aws.amazon.com/ja_jp/fsx/latest/WindowsGuide/validate-ad-config.html
https://dev.classmethod.jp/articles/self-managed-ad-best-practices-for-fsx-for-windows/
https://cloud-si.com/powershell-tls12/

 

※デプロイタイプ(「シングルAZ 1」「マルチAZ」等) は作成後変更できない

 

前提:
AZは1Aを使用
VPCはデフォルトを使用

ADドメイン :contoso.com

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

-- 1.2 jqインストール
sudo yum -y install jq

 

-- 2. IAMロール作成
vim role01.json

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
}

 

aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json


-- 3. ポリシーをロールにアタッチ

aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess \
--role-name role01

 

-- 4. インスタンスプロファイルを作成

aws iam create-instance-profile --instance-profile-name profile01

aws iam list-instance-profiles | grep InstanceProfileName

-- 5. インスタンスプロファイルにロールを追加
aws iam add-role-to-instance-profile --instance-profile-name profile01 --role-name role01

aws iam list-instance-profiles-for-role --role-name role01

 


-- 6. FSx用セキュリティグループの作成
aws ec2 create-security-group \
--description fsx \
--group-name fsx \
--vpc-id vpc-11111111111111111

aws ec2 describe-security-groups | jq -r '.SecurityGroups | [ .GroupId, .GroupName ]'


-- インバウンドルール追加
-- 自セキュリティグループからの全トラフィックを許可
-- 172.31.0.0/16からの全トラフィック許可
-- 0.0.0.0/0からのRDPを許可


aws ec2 authorize-security-group-ingress \
--group-id sg-22222222222222222 \
--protocol all \
--port all \
--source-group sg-22222222222222222

aws ec2 authorize-security-group-ingress \
--group-id sg-22222222222222222 \
--protocol all \
--port all \
--cidr 172.31.0.0/16

aws ec2 authorize-security-group-ingress \
--group-id sg-22222222222222222 \
--protocol tcp \
--port 3389 \
--cidr 0.0.0.0/0


-- 7. ドメインコントローラ用EC2インスタンス作成


Windows_Server-2016-Japanese-Full-Base-2022.08.10
ami-022c51ab022dd1197
t3.small (2vCPU 2GiB)


aws ec2 run-instances \
--image-id ami-022c51ab022dd1197 \
--instance-type t3.small \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' \
--subnet-id subnet-33333333333333333 \
--associate-public-ip-address \
--security-group-ids sg-22222222222222222 \
--iam-instance-profile Name="profile01"


aws ec2 describe-instances

 

-- 8. AD作成

ドメインコントローラ用EC2インスタンスにAdministratorでログイン

Windows PowerShellを管理者として実行

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

$pass = ConvertTo-SecureString -AsPlainText -Force "password"

Install-ADDSForest -DomainName contoso.com -SafeModeAdministratorPassword $pass -Force

 


-- 9. アクティブディレクトリ設定

ドメインコントローラ用EC2インスタンスにcontoso.com\Administratorでログイン

 


OU を1つ新規作成
グループを1つ新規作成
ドメインユーザーを2つ新規作成
うち1ユーザーは作成したグループのメンバーにする

OU名: testou
グループ名: testgroup (FSx管理者グループ)
ユーザ名: user01  (FSxサービスアカウント) -> 「Amazon FSx サービスアカウントへの許可の委任」を実施
          user02  (FSx管理者ユーザ)       -> testgroupグループに所属させる

 

-- 10. アクティブディレクトリ設定の検証


Windows PowerShellを管理者として実行


Import-Module ActiveDirectory


[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest "https://docs.aws.amazon.com/fsx/latest/WindowsGuide/samples/AmazonFSxADValidation.zip" -OutFile "AmazonFSxADValidation.zip"

 

Expand-Archive -Path "AmazonFSxADValidation.zip"

Import-Module .\AmazonFSxADValidation

 

$Credential = Get-Credential

→ contoso.com\user01 を入力


$FSxADValidationArgs = @{
    # DNS root of ActiveDirectory domain
    DomainDNSRoot = 'contoso.com'

    # IP v4 addresses of DNS servers
    DnsIpAddresses = @('172.31.11.11')

    # Subnet IDs for Amazon FSx file server(s)
    SubnetIds = @('subnet-33333333333333333')

    # Specify an organizational unit
    OrganizationalUnit = 'OU=testou,DC=contoso,DC=com'
    
    Credential = $Credential
}


$Result = Test-FSxADConfiguration @FSxADValidationArgs


→Test 3 - Validate FSx service user credentialsで警告、それ以降のテストはスキップとなるが、無視して作業を進める

 


-- 11. ファイルシステムを作成する


aws fsx describe-file-systems

aws fsx create-file-system \
--file-system-type WINDOWS \
--storage-capacity 32 \
--storage-type SSD \
--subnet-ids subnet-33333333333333333 \
--security-group-ids sg-22222222222222222 \
--windows-configuration '{
                  "SelfManagedActiveDirectoryConfiguration": {
                    "DomainName": "contoso.com",
                    "OrganizationalUnitDistinguishedName": "OU=testou,DC=contoso,DC=com",
                    "FileSystemAdministratorsGroup": "testgroup",
                    "UserName": "user01",
                    "Password": "password",
                    "DnsIps": ["172.31.11.11"]
                  },
                "DeploymentType": "SINGLE_AZ_1",
                "PreferredSubnetId": "subnet-33333333333333333",
                "ThroughputCapacity": 8,
                "WeeklyMaintenanceStartTime": "6:18:00",
                "DailyAutomaticBackupStartTime": "16:00",
                "AutomaticBackupRetentionDays": 0,
                "CopyTagsToBackups": false,
                "AuditLogConfiguration": {
                    "FileAccessAuditLogLevel": "DISABLED",
                    "FileShareAccessAuditLogLevel": "DISABLED"
                }
              }' \
--tags '[ { "Key": "Name", "Value": "fs01" } ]'

 

-- 12. Amazon FSx for Windows を EC2(Windows)にマウント

ドメインコントローラ用EC2インスタンスにcontoso.com\Administratorでログイン


net use Z: \\444444444444444.contoso.com\share

net use

net use Z: /D

 

-- 13. クリーンアップ

-- ファイルシステムの削除

aws fsx describe-file-systems

aws fsx delete-file-system \
--file-system-id fs-55555555555555555

 

-- EC2インスタンスの削除

aws ec2 describe-instances
aws ec2 terminate-instances --instance-ids i-66666666666666666

 

-- FSx用セキュリティグループの削除

aws ec2 describe-security-groups | jq -r '.SecurityGroups | [ .GroupId, .GroupName ]'
aws ec2 delete-security-group --group-id sg-22222222222222222


-- インスタンスプロファイルの削除

aws iam remove-role-from-instance-profile --instance-profile-name profile01 --role-name role01


aws iam delete-instance-profile --instance-profile-name profile01

aws iam list-instance-profiles | grep InstanceProfileName

 

-- IAMロールの削除
aws iam list-roles | grep role01

aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess

aws iam delete-role --role-name role01