https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html
https://qiita.com/mksamba/items/a6e93bbd2e0bd80c9393
https://aws.amazon.com/jp/premiumsupport/knowledge-center/enable-active-directory-console-access/
https://aws.amazon.com/jp/blogs/news/how-to-access-the-aws-management-console-using-aws-microsoft-ad-and-your-on-premises-credentials/
https://tooljp.com/language/powershell/html/Windows-AD-domain-join-command.html
https://www.haruru29.net/blog/how-to-configure-dns-server-using-powershell/
https://qiita.com/satoshi_iwashita/items/aec397f8b210efd15666
https://arumumu.hatenablog.com/entry/create-foresttrust-with-powershell
前提:
デフォルトセキュリティグループ
インバウンド
172.31.0.0/16 全トラフィック許可
0.0.0.0/0 SSH許可
0.0.0.0/0 RDP許可
アウトバウンド
0.0.0.0/0 全トラフィック許可
AZは1Aを使用
VPCはデフォルトを使用
AWS Managed Microsoft ADドメイン:contoso-aws.com
オンプレADドメイン :contoso-opr.com
AWS Managed Microsoft AD用サブネット
1A 172.31.48.0/20 contoso-aws-1a
1C 172.31.64.0/20 contoso-aws-1c
オンプレAD用サブネット
1A 172.31.80.0/20 contoso-opr-1a
-- 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. サブネット作成
aws ec2 create-subnet \
--availability-zone ap-northeast-1a \
--cidr-block 172.31.48.0/20 \
--vpc-id vpc-11111111111111111 \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=contoso-aws-1a}]'
aws ec2 create-subnet \
--availability-zone ap-northeast-1c \
--cidr-block 172.31.64.0/20 \
--vpc-id vpc-11111111111111111 \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=contoso-aws-1c}]'
aws ec2 create-subnet \
--availability-zone ap-northeast-1a \
--cidr-block 172.31.80.0/20 \
--vpc-id vpc-11111111111111111 \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=contoso-opr-1a}]'
aws ec2 describe-subnets
aws ec2 describe-subnets | jq -r '.Subnets | {SubnetId,Tags}'
-- 3. AWS Managed Microsoft ADの作成
-- 3.1 AWS Managed Microsoft ADの作成
aws ds create-microsoft-ad \
--name contoso-aws.com \
--password 'password' \
--vpc-settings '{
"VpcId": "vpc-11111111111111111",
"SubnetIds": ["subnet-22222222222222222", "subnet-33333333333333333"]
}' \
--edition Standard
aws ds describe-directories
時間がかかるので、EC2インスタンス作成などのできるところは先にすすめる
-- 3.2 AWS Managed Microsoft ADで自動生成されたセキュリティグループ※に下記ルールを追加する
※名前にディレクトリ IDが含まれる
インバウンド
172.31.0.0/16 全トラフィック許可
アウトバウンド
0.0.0.0/0 全トラフィック許可
-- 3.3 作業用EC2インスタンス作成
Windows_Server-2016-Japanese-Full-Base-2022.05.25
ami-01beeb30bc905d6a2
t3.medium (2vCPU 4GiB)
aws ec2 run-instances \
--image-id ami-01beeb30bc905d6a2 \
--instance-type t3.medium \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=contoso-aws}]' \
--subnet-id subnet-22222222222222222 \
--associate-public-ip-address
aws ec2 describe-instances
-- 3.4 ドメイン参加
作業用EC2インスタンスにAdministratorでログイン
DNSサーバをAWS Managed Microsoft ADのドメインコントローラのIPに変更
Get-NetIPInterface
Set-DnsClientServerAddress -InterfaceAlias "イーサネット 2" -ServerAddress "172.31.57.174","172.31.76.4"
$pass = ConvertTo-SecureString -AsPlainText -Force "password"
$cred = New-Object System.Management.Automation.PSCredential("contoso-aws.com\admin",$pass)
Add-Computer -DomainName "contoso-aws.com" -Credential $cred
Restart-Computer
-- 3.5 管理ツール(Active Directory 管理センター)インストール
作業用EC2インスタンスにcontoso-aws.com\adminでログイン
管理者としてPowershell起動
Install-WindowsFeature RSAT-ADDS
-- 3.6 ドメインユーザ作成
$pass = ConvertTo-SecureString -AsPlainText -Force "password"
New-ADUser -Name "aws-user" -Accountpassword $pass -Enabled $true -PasswordNeverExpires $true
Add-ADGroupMember -Identity "AWS Delegated Administrators" -Members "aws-user"
-- 4. オンプレADの作成
-- 4.1 ドメインコントローラ用EC2インスタンス作成
Windows_Server-2016-Japanese-Full-Base-2022.05.25
ami-01beeb30bc905d6a2
t3.medium (2vCPU 4GiB)
aws ec2 run-instances \
--image-id ami-01beeb30bc905d6a2 \
--instance-type t3.medium \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=contoso-opr}]' \
--subnet-id subnet-44444444444444444 \
--associate-public-ip-address
-- 4.2 オンプレAD作成
ドメインコントローラ用EC2インスタンスにAdministratorでログイン
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
$pass = ConvertTo-SecureString -AsPlainText -Force "password"
Install-ADDSForest -DomainName contoso-opr.com -SafeModeAdministratorPassword $pass -Force
-- 4.3 ドメインユーザ作成
ドメインコントローラ用EC2インスタンスにcontoso-opr.com\administratorでログイン
$pass = ConvertTo-SecureString -AsPlainText -Force "password"
New-ADUser -Name "opr-user" -Accountpassword $pass -Enabled $true -PasswordNeverExpires $true
Add-ADGroupMember -Identity "Administrators" -Members "opr-user"
-- 5. AWS Managed Microsoft AD と オンプレAD間で、信頼関係を設定
-- 5.1 条件付きフォワーダーの設定[オンプレADでの作業]
Add-DnsServerConditionalForwarderZone `
-Name "contoso-aws.com" `
-MasterServers 172.31.57.174,172.31.76.4 `
-ReplicationScope "Forest"
Get-DnsServerZone
-- 5.2 信頼関係の設定[オンプレADでの作業]
$TargetForestName = "contoso-aws.com"
$TrustPassword = "password"
$TrustDirection = "Bidirectional"
$Forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$Forest.CreateLocalSideOfTrustRelationship($TargetForestName,$TrustDirection,$TrustPassword)
Get-ADTrust -Filter * | Format-Table -Property Direction,Name,ObjectClass,TrustAttributes -AutoSize
-- 5.3 信頼関係の設定[AWS Managed Microsoft ADでの作業]
aws ds create-trust \
--directory-id d-5555555555 \
--remote-domain-name contoso-opr.com \
--trust-password 'password' \
--trust-direction Two-Way \
--trust-type Forest \
--conditional-forwarder-ip-addrs "172.31.85.123" \
--selective-auth Disabled
aws ds describe-trusts
aws ds verify-trust \
--trust-id t-6666666666
-- 6. AWSマネージメントコンソールへのログオン時の認証に、AWS Managed Microsoft ADを使用するように設定
-- 6.1 AWS Managed Microsoft ADの アクセス URL を作成
aws ds create-alias \
--directory-id d-5555555555 \
--alias xxxxxxxxxxxx
-- 6.2 IAMロール作成
vim role01.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ds.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json
-- 6.3 ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--role-name role01
-- 6.4 AWS Managed Microsoft AD の AWS マネジメントコンソールアクセスを有効化
-- 6.5 Active Directory ユーザーまたはグループを IAM ロールに割り当て
しばらく待つと
コンソールアクセスの委任にIAMロールが表示される
contoso-aws.com\aws-user
contoso-opr.com\opr-user
★原因不明のエラー発生
ロールへのオンプレのユーザ追加時下記エラー
リクエストに問題があります。以下の詳細を参照してください。
Directory Error: InvalidTokenException
オンプレでもグループなら追加できる。
その後、このエラーは発生しなくなった。
-- 6.6 オンプレADのユーザで、AWSマネージメントコンソールにログインできることを確認
https://xxxxxxxxxxxx.awsapps.com/console
-- 7. クリーンアップ
-- Active Directory ユーザーまたはグループを IAM ロールから割り当て解除
-- AWS Managed Microsoft AD の AWS マネジメントコンソールアクセスを無効化
-- AWS Managed Microsoft ADの削除
aws ds describe-directories
aws ds delete-directory \
--directory-id d-5555555555
-- IAMロールの削除
aws iam list-roles | grep role01
aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
aws iam delete-role --role-name role01
-- EC2インスタンスの削除
aws ec2 describe-instances
aws ec2 terminate-instances --instance-ids i-77777777777777777
aws ec2 terminate-instances --instance-ids i-88888888888888888
-- サブネットの削除
EC2削除完了後に実施
aws ec2 describe-subnets
aws ec2 describe-subnets | jq -r '.Subnets | {SubnetId,Tags}'
aws ec2 delete-subnet \
--subnet-id subnet-22222222222222222
aws ec2 delete-subnet \
--subnet-id subnet-33333333333333333
aws ec2 delete-subnet \
--subnet-id subnet-44444444444444444