翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 Linux インスタンスを AWS Managed Microsoft AD Active Directory にシームレスに結合する
この手順では、Amazon EC2 Linux インスタンスを AWS Managed Microsoft AD Active Directory にシームレスに結合します。複数のアカウントでシームレスなドメイン結合を実行する必要がある場合は AWS 、オプションでディレクトリ共有 を有効にすることができます。
以下の Linux インスタンスのディストリビューションおよびバージョンがサポートされています。
-
Amazon Linux AMI 2018.03.0
-
Amazon Linux 2 (64 ビット x86)
-
Red Hat Enterprise Linux 8 (HVM) (64 ビット x86)
-
Ubuntu Server 18.04 LTSおよび Ubuntu Server 16.04 LTS
-
CentOS 7 x86-64
-
SUSE Linux Enterprise Server 15 SP1
注記
Ubuntu 14 および Red Hat Enterprise Linux 7 より前のディストリビューションでは、シームレスなドメイン結合機能はサポートされていません。
Linux インスタンスを AWS Managed Microsoft AD Active Directory にシームレスに結合するプロセスのデモンストレーションについては、次の YouTube 動画を参照してください。
前提条件
Linux インスタンスへのシームレスなドメイン結合を設定する前に、このセクションの手順を完了する必要があります。
シームレスなドメイン結合のサービスアカウントを選択する
Linux コンピュータを AWS Managed Microsoft AD Active Directory ドメインにシームレスに結合できます。これを行うには、マシンをドメインに結合するためのコンピュータアカウントの作成アクセス許可を持つユーザーアカウントを使用する必要があります。AWS が委任した管理者または他のグループのメンバーが、コンピュータをドメインに結合する十分な権限を持っている場合でも、これらを使用することは推奨されません。ベストプラクティスとして推奨されるのは、コンピュータをドメインに結合するために必要な、最小限の権限を持ったサービスアカウントを使用することです。
コンピュータをドメインに参加させるために必要な最小限の権限を持つアカウントを委任するには、次の PowerShell コマンドを実行します。これらのコマンドは、ドメインに結合され、管理対象の Microsoft AD AWS 用アクティブディレクトリ管理ツールのインストール がインストールされている Windows コンピュータから実行する必要があります。また、コンピュータ OU またはコンテナのアクセス許可を変更するアクセス許可を持つアカウントを使用する必要があります。 PowerShell コマンドは、サービスアカウントがドメインのデフォルトコンピュータコンテナにコンピュータオブジェクトを作成できるようにするアクセス許可を設定します。
$AccountName = 'awsSeamlessDomain' # DO NOT modify anything below this comment. # Getting Active Directory information. Import-Module 'ActiveDirectory' $Domain = Get-ADDomain -ErrorAction Stop $BaseDn = $Domain.DistinguishedName $ComputersContainer = $Domain.ComputersContainer $SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext' [System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID # Getting Service account Information. $AccountProperties = Get-ADUser -Identity $AccountName $AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value # Getting ACL settings for the Computers container. $ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer" # Setting ACL allowing the service account the ability to create child computer objects in the Computers container. $AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All' $ObjectAcl.AddAccessRule($AddAccessRule) Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"
グラフィカルユーザーインターフェイス (GUI) を使用する場合は、「」で説明されている手動プロセスを使用できます権限をサービスアカウントに委任する。
ドメインサービスアカウントを保存するシークレットを作成する
AWS Secrets Manager を使用してドメインサービスアカウントを保存できます。
ドメインサービスアカウントの情報を保存するシークレットを作成するには
-
にサインイン AWS Management Console し、 で AWS Secrets Manager コンソールを開きますhttps://console.aws.amazon.com/secretsmanager/
。 -
[Store a new secret] (新しいシークレットの保存) を選択します。
-
[Store a new secret] (新しいシークレットを保存する) のページで、次の操作を行います:
-
[シークレットのタイプ] で、[その他のシークレットのタイプ] を選択します。
-
[Key/value pairs] (キー/値ペア) で、次のように実行します。
-
最初のボックスに
awsSeamlessDomainUsername
と入力します。同じ行の次のボックスに、サービスアカウントのユーザー名を入力します。例えば、以前に PowerShell コマンドを使用した場合、サービスアカウント名は になりますawsSeamlessDomain
。注記
awsSeamlessDomainUsername
を正確に入力する必要があります。先頭または末尾にスペースがないことを確認します。スペースがあると、ドメイン結合が失敗します。 -
[Add row] (行の追加) を選択します。
-
新しい行で、最初のボックスに
awsSeamlessDomainPassword
と入力します。同じ行の次のボックスに、サービスアカウントのパスワードを入力します。注記
awsSeamlessDomainPassword
を正確に入力する必要があります。先頭または末尾にスペースがないことを確認します。スペースがあると、ドメイン結合が失敗します。 -
暗号化キーの下で、デフォルト値
aws/secretsmanager
のままにしておきます。 このオプションを選択すると、 AWS Secrets Manager は常に秘密を暗号化します。自身で作成したキーを選択することもできます。注記
使用するシークレットに応じて AWS Secrets Manager、 に関連する料金が発生します。現在の価格の詳細なリストについては、「AWS Secrets Manager 料金表
」を参照してください。 Secrets Manager
aws/secretsmanager
が作成する AWS マネージドキーを使用して、シークレットを無料で暗号化できます。独自のKMSキーを作成してシークレットを暗号化すると、 は現在の AWS KMS レートで AWS 課金します。詳細については、「AWS Key Management Service 料金」を参照してください。 -
[Next (次へ)] を選択します。
-
-
-
シークレット名 に、ディレクトリ ID を含むシークレット名を次の形式で入力し、
d-xxxxxxxxx
ディレクトリ ID を指定:aws/directory-services/
d-xxxxxxxxx
/seamless-domain-joinこれは、アプリケーション内のシークレットを取得するために使用されます。
注記
aws/directory-services/
そのまま入力する必要がありますが、d-xxxxxxxxx
/seamless-domain-joind-xxxxxxxxxx
ディレクトリ ID を入力します。先頭または末尾にスペースがないことを確認します。スペースがあると、ドメイン結合が失敗します。 -
それ以外はすべてデフォルトのままにして、[Next] (次へ) をクリックします。
-
[Configure automatic rotation] (自動ローテーションを設定) で [Disable automatic rotation] (自動ローテーションを無効にする) を選択し、[Next] (次へ) をクリックします。
このシークレットの保存後にローテーションを有効にできます。
-
設定を確認し、[Store] (保存) をクリックして変更を保存します。Secrets Manager コンソールがアカウントのシークレットリストに戻ります。リストには、新しいシークレットが追加されています。
-
リストから新しく作成したシークレット名を選択し、シークレットARN値を書き留めます。これは次のセクションで必要になります。
ドメインサービスアカウントシークレットのローテーションを有効にする
セキュリティ体制を改善するために、シークレットを定期的にローテーションすることをお勧めします。
ドメインサービスアカウントシークレットのローテーションを有効にするには
-
「 AWS Secrets Manager ユーザーガイド」の AWS Secrets Manager 「シークレットの自動ローテーションを設定する」の手順に従います。
ステップ 5 では、「 AWS Secrets Manager ユーザーガイド」の「Microsoft Active Directory の認証情報」のローテーションテンプレートを使用します。
ヘルプについては、「 ユーザーガイド」の AWS Secrets Manager 「ローテーションのトラブルシューティングAWS Secrets Manager 」を参照してください。
必要なIAMポリシーとロールを作成する
Secrets Manager のシームレスなドメイン結合シークレット (以前に作成したもの) への読み取り専用アクセスを許可するカスタムポリシーを作成し、新しい LinuxEC2DomainJoin IAMロールを作成するには、以下の前提条件ステップを使用します。
Secrets Manager のIAM読み取りポリシーを作成する
IAM コンソールを使用して、Secrets Manager シークレットへの読み取り専用アクセスを許可するポリシーを作成します。
Secrets Manager のIAM読み取りポリシーを作成するには
-
IAM ポリシーを作成する権限を持つユーザー AWS Management Console として にサインインします。次に、 でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/
。 -
ナビゲーションペインの [アクセス管理] で、[ポリシー] を選択します。
-
[Create policy] を選択します。
-
JSON タブを選択し、次のJSONポリシードキュメントからテキストをコピーします。次に、JSONテキストボックスに貼り付けます。
注記
リージョンとリソースをARN、前に作成したシークレットARNの実際のリージョンとに置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:
us-east-1:xxxxxxxxx
:secret:aws/directory-services/d-xxxxxxxxx
/seamless-domain-join" ] } ] } -
完了したら、[Next] を選択します。構文エラーがある場合は、ポリシーバリデータが報告します。詳細については、IAM「ポリシーの検証」を参照してください。
-
[Review policy] (ポリシーの確認) ページで、ポリシー名を入力します (
SM-Secret-Linux-DJ-
など)。[Summary] (概要) セクションで、ポリシーで付与されているアクセス許可を確認します。[Create Policy] (ポリシーの作成) をクリックし、変更を保存します。新しいポリシーが管理ポリシーのリストに表示されます。これで ID にアタッチする準備は完了です。d-xxxxxxxxxx
-Read
注記
シークレットごとに 1 つのポリシーを作成することをお勧めします。そうすることで、インスタンスが適切なシークレットにのみアクセスできるようになり、インスタンスが侵害された場合の影響を最小限に抑えることができます。
LinuxEC2DomainJoin ロールを作成する
IAM コンソールを使用して、Linux EC2インスタンスのドメイン結合に使用するロールを作成します。
LinuxEC2DomainJoin ロールを作成するには
-
IAM ポリシーを作成する権限を持つユーザー AWS Management Console として にサインインします。次に、 でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/
。 -
ナビゲーションペインの [Access Management] (アクセス管理) で、[Roles] (ロール) を選択します。
-
コンテンツペインで、[Create role] (ロールの作成) を選択します。
-
[Select type of trusted entity] (信頼されたエンティティの種類を選択) の下で、[AWS Service] を選択します。
-
ユースケース で を選択しEC2、次へ を選択します。
-
[Filter policies] (フィルターポリシー) で、以下を実行します。
-
AmazonSSMManagedInstanceCore
と入力します。次に、リスト内のその項目のチェックボックスをオンにします。 -
AmazonSSMDirectoryServiceAccess
と入力します。次に、リスト内のその項目のチェックボックスをオンにします。 -
SM-Secret-Linux-DJ-
(または前の手順で作成したポリシーの名前) を入力します。次に、リスト内のその項目のチェックボックスをオンにします。d-xxxxxxxxxx
-Read 上記の 3 つのポリシーを追加したら、[ロールを作成] を選択します。
注記
mazonSSMDirectoryServiceAccess は、 によってActive Directory管理される にインスタンスを結合するアクセス許可を提供します AWS Directory Service。mazonSSMManagedInstanceCore は、 AWS Systems Manager サービスを使用するために必要な最小限のアクセス許可を提供します。これらのアクセス許可を持つロールの作成、およびロールに割り当てることができるその他のアクセス許可とポリシーの詳細については、「 AWS Systems Manager ユーザーガイド」の「Systems Manager のIAMインスタンスプロファイルを作成するIAM」を参照してください。
-
LinuxEC2DomainJoin
[Role name] (ロール名)欄 に、 適宜の別の名前など 新しいロールの名前を入力します。(オプション) [Role description] (ロールの説明) に、説明を入力します。
(オプション) [ステップ 3: タグの追加] で [新しいタグの追加] を選択してタグを追加します。タグのキーと値のペアは、このロールのアクセスを整理、追跡、または制御するために使用されます。
-
[ロールの作成] を選択します。
Linux インスタンスをシームレスに結合する
Linux インスタンスをシームレスに結合するには
-
にサインイン AWS Management Console し、 で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/
。 -
ナビゲーションバーのリージョンセレクターから、既存のディレクトリ AWS リージョン と同じ を選択します。
-
EC2 ダッシュボード のインスタンスを起動セクションで、インスタンスを起動 を選択します。
-
インスタンスの起動ページの「名前とタグ」セクションで、Linux EC2インスタンスに使用する名前を入力します。
(オプション) 追加タグを選択して、このEC2インスタンスへのアクセスを整理、追跡、または制御するタグキーと値のペアを 1 つ以上追加します。
-
アプリケーションと OS イメージ (Amazon マシンイメージ) セクションで、起動する Linux AMI を選択します。
注記
AMI 使用する には、 AWS Systems Manager (SSM エージェント) バージョン 2.3.1644.0 以降が必要です。その からインスタンスを起動AMIして にインストールされている SSM エージェントバージョンを確認するにはAMI、「現在インストールされている SSM エージェントバージョンの取得」を参照してください。SSM エージェントをアップグレードする必要がある場合は、「Linux 用EC2インスタンスでのSSMエージェントのインストールと設定」を参照してください。
SSM は、Linux インスタンスをActive Directoryドメインに結合する
aws:domainJoin
ときにプラグインを使用します。プラグインは Linux インスタンスのホスト名を EC2AMAZ- の形式に変更します。XXXXXXX
。 の詳細についてはaws:domainJoin
、「 ユーザーガイド」のAWS Systems Manager 「コマンドドキュメントプラグインリファレンスAWS Systems Manager 」を参照してください。 -
[インスタンスタイプ] セクションで、[インスタンスタイプ] ドロップダウンリストから使用するインスタンスタイプを選択します。
-
[キーペア (ログイン)] セクションで、新しいキーペアを作成するか、既存のキーペアから選択します。新しいキーペアを作成するには、[新しいキーペアの作成] を選択します。キーペアの名前を入力し、[キーペアタイプ] と [プライベートキーファイル形式] のオプションを選択します。Open で使用できる形式でプライベートキーを保存するにはSSH、.pem を選択します。Pu で使用できる形式でプライベートキーを保存するにはTTY、.ppk を選択します。[キーペアの作成] を選択します。ブラウザによって秘密キーファイルが自動的にダウンロードされます。ダウンロードしたプライベートキーのファイルを安全な場所に保存します。
重要
プライベートキーのファイルを保存できるのは、このタイミングだけです。
-
[インスタンスを起動する] ページの [ネットワーク設定] セクションで、[編集] を選択します。ディレクトリVPCが作成された を VPC - 必須のドロップダウンリストから選択します。
-
サブネットドロップダウンリストから、 内のパブリックサブネットVPCのいずれかを選択します。選択するサブネットで、すべての外部トラフィックがインターネットゲートウェイにルーティングされるように選択する必要があります。そうでない場合は、インスタンスにリモート接続できません。
インターネットゲートウェイに接続する方法の詳細については、「Amazon ユーザーガイド」の「インターネットゲートウェイを使用してインターネットに接続する」を参照してください。 VPC
-
[自動割り当てパブリック IP] で、[有効化] を選択します。
パブリック IP アドレス指定とプライベート IP アドレス指定の詳細については、「Amazon ユーザーガイド」の「Amazon EC2インスタンス IP アドレス指定」を参照してください。 EC2
-
[ファイアウォール (セキュリティグループ)] 設定にはデフォルト設定を使用するか、必要に応じて変更を加えることができます。
-
[ストレージの設定] 設定にはデフォルト設定を使用するか、必要に応じて変更を加えることができます。
-
[高度な詳細] セクションを選択し、[ドメイン結合ディレクトリ] ドロップダウンリストからドメインを選択します。
注記
ドメイン結合ディレクトリを選択すると、以下が表示されることがあります。
このエラーは、EC2起動ウィザードが予期しないプロパティを持つ既存のSSMドキュメントを特定した場合に発生します。次のいずれかを試すことができます。
以前にSSMドキュメントを編集し、プロパティが想定されている場合は、閉じるを選択して変更なしでEC2インスタンスを起動します。
既存のSSMドキュメントを削除するリンクを選択して、SSMドキュメントを削除します。これにより、正しいプロパティを持つ SSMドキュメントを作成できます。SSM ドキュメントは、EC2インスタンスの起動時に自動的に作成されます。
-
IAM インスタンスプロファイル で、前提条件セクション「ステップ 2: Linux IAMロール を作成する」で以前に作成したロールを選択します。 EC2DomainJoin
-
Launch instance (インスタンスの起動) を選択します。
注記
SUSE Linux でシームレスなドメイン結合を実行する場合は、認証が機能する前に再起動する必要があります。Linux ターミナルSUSEから再起動するには、sudo reboot と入力します。