こんにちは、Enterprise Cloud部 技術1課 宮形 です。
2023年8月末にAWS Private CA と Active Directory を連携させる機能提供がアナウンスされました。Active Directory 大好き人間としてとても気になりなりましたので、早速 試用してみました。その際の内容を本BLOGにてご紹介させていただきます。
AWS Private CA Connector for Active Directory とは
今回の機能提供を実現するために「AWS Private CA Connector for Active Directory」という機能がリリースされています。これは AWS Managed Microsoft Active Directory または AWS Managed Microsoft AD Connector (以下 AD Connector)と、AWS Private CA (以下 Private CA)を連携させるためのコネクタになります。これにより、Active Directory ドメインに参加したユーザーやコンピューターへ Private CA から証明書を発行することが出来るようになりました。
従来の Active Directory (以下AD) 環境下では、Microsoft より「Active Directory 証明書サービス(Active Directory Certificate Services)」(以下 ADCS)という機能が提供されており、こちらとADを利用することで プライベートCAとして証明書の発行を実現することが出来ました。
今回の AWS Private CA Connector for Active Directory の登場により、プライベートCAを Windows Server にインストールする ADCS ではなく、マネージドサービスである AWS Private CA に置き換えることが出来るようになります。サーバーのOS管理、パッチ管理、冗長化等を構築・設計・運用する必要がなくなり、TCO削減に貢献することが出来ます。
AWS Private CA 秘密鍵の暗号化モジュールは、FIPS PUB 140-2 の要件に準拠した ハードウェアセキュリティモジュール (HSM) を利用しておりますので、高水準でのセキュリティ要件にも安心して利用することが出来ます。
AWS Private Certificate Authority でのデータ保護 - AWS Private Certificate Authority
AWS構成図
AWS構成図に、AWS Private CA Connector for Active Directory を用いた証明書発行の大まかな流れを記載してみました。
AWS Blog にも解説が掲載されていますので、ご参照ください。
セットアップ手順
今回試用を行ったセットアップ手順をご紹介します。既に ADドメインコントローラー*1、Private CA*2、AD Connector*3 はセットアップ済で利用可能となっている状況になります。これらセットアップ方法が分からない方は、BLOG末尾に弊社参考BLOGを記載していますのでご覧ください。
AD Connector のサービスアカウントは Domain Admin グループに属する権限で行いましたが、最小限の権限付与としたい場合は、下記公式ドキュメントに設定PowerShellサンプルがあるのでご活用ください。 Set up AWS Private CA Connector for AD - AWS Directory Service
セットアップは全て AWSマネジメントコンソール上で行います。「Directory Service」コンソールに移動し、「ディレクトリ」より一覧から AD Connector を選択します。「ネットワークとセキュリティ」タブ内に「AD 用の AWS Private CA Connector」セクションがあるので「設定」をクリックします。
「Private CA Connector for Active Directory を作成」の画面が表示されます。今回は AD Connector を選択し、VPCエンドポイントに割り当てるセキュリティグループ、Private CA を選択し、「コネクタを作成」をクリックします。セキュリティグループは「証明書登録ポリシーサーバーエンドポイント」のENIに割り当てますので、ADドメインのメンバーPC、サーバーが配置されるCIDRから https 接続が許可されるようにします。
「ディレクトリの登録」セクションが「ステータス:アクティブ」となることを確認します。
「AWS Private CA Connector for Active Directory」のコンソールへ移動します。「ディレクトリの登録」の一覧より AD Connector を選択します。次ページに「コネクタおよびサービスプリンパル名(SPN)」セクションがあるので、「SPNの作成」をクリックします。
ここまで進めた時点で、ADドメインのメンバーPC、サーバーには Private CA のルート証明書が配布されるようになります。
Windowsデスクトップ上から コマンド certmgr.msc
より証明書コンソールを呼び出し、「証明書 - 現在のユーザー」-「信頼されたルート証明機関」-「証明書」の中から確認できます。
ADSIエディタ上からも、AWS Private CA Connector for Active Directory がエンタープライズ CA として登録されたことが確認できます。「CN=Certificate Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=<ドメイン名>」配下にAWSのリソースIDが表示されています。
これでセットアップ手順は完了です。
証明書の発行手順
では Private CA から証明書を発行してみたいと思います。手動発行、自動発行がありますが試用では手動発行としました。
テンプレートの作成、権限設定
「AWS Private CA Connector for Active Directory」のコンソールへ移動します。「Connectors for Active Directory」の一覧よりコネクタを選択します。「テンプレート」セクションより「テンプレートを作成」をクリックします。
「テンプレートの作成」の画面が表示されます。今回は試用なので最低限の設定とします。ADCSを使ったことがある人であればわかると思いますが概念は同じです。
作成方法「事前定義されたテンプレートから開始」-「ユーザー署名」として、任意の「テンプレート名」を設定します。
「証明書の設定」セクションではタイプ、有効期限、サブジェクト名、代替名等を設定します。ここは用途、要件に応じてヒアリングして決めることになるかと思います。末尾の「テンプレートを作成」をクリックします。
続けて「グループと許可の管理」の画面をクリックして開きます。Active Directory のどのセキュリティグループに対して証明書発行を許可するか設定します。これもADCSと同じ概念ですね。グループを セキュリティ識別子(SID)で設定する必要があるので少し面倒ですが・・・今回は「Domain Users」に対して手動配布で「登録:ALLOW」としました。
私が試用した際、この箇所で何故かエラーが出るケースがありました。やり直したり値を一旦 NOT SET にして、後からALLOWにすると上手くいったりしました。リリースされたばかりの機能なので一時的な不具合かもしれません。
エラーは出ましたが登録はできました。
グループポリシーの設定
Active Directory と連携した証明書発行には、グループポリシーの設定が必要になります。これは ADCS と同じです。 どうやら Private CA としての「証明書登録ポリシーサーバーエンドポイント」を設定してあげる必要があるようです。
「AWS Private CA Connector for Active Directory」のコンソールへ移動します。「Connectors for Active Directory」の一覧よりコネクタを選択します。「証明書登録ポリシーサーバーエンドポイント」のURLをコピーして控えておきます。
ADドメインのメンバーPCにてローカルグループポリシーエディタ gpedit.msc
を起動します。
「ユーザーの構成」-「Windowsの設定」-「セキュリティの設定」-「公開キーのポリシー」-「証明書サービス クライアント - 証明書登録ポリシー」を設定します。
プロパティが表示されます。「構成モデル:有効」とし、「証明書登録ポリシーの一覧」セクションの「追加」をクリックします。
「証明書の登録ポリシーサーバー」の画面が表示されます。「登録ポリシーサーバーURIの入力」に先ほど控えた「証明書登録ポリシーサーバーエンドポイント」を入力します。「サーバーの検証」をクリックし、「検証に成功しました」と表示されることを確認し、「追加」をクリックします。
一つ前の画面に戻り「OK」をクリックします。
このグループポリシーの設定は、下記公式ドキュメントを参考にしました。この資料ではLDAP設定を削除するよう記載ありましたが、実際やってみるとそのような設定が無かったので実施しませんでした。
Configure AD policies - AWS Private Certificate Authority
グループポリシーの設定としては以上となります。今回は試用なのでローカルグループポリシーエディタで行いましたが、実運用では ADのグループポリシーで設定することが一般的かと思います。
クライアントでの証明書要求
今ほどグループポリシーを設定したメンバーPCにて、Private CAより証明書発行を行ってみたいと思います。メンバーPCのWindowsデスクトップで証明書コンソール certmgr.msc
を起動します。「証明書 - 現在のユーザー」-「個人」-「すべてのタスク」-「新しい証明書の要求」をクリックします。
「証明書の登録ポリシーの選択」が表示されます。先ほどのグループポリシーが正しく設定されていれば、AWS Private CA Connector for Active Directory が一覧に表示されますので選択し、「次へ」をクリックします。
「証明書の要求」が表示されます。一覧に先ほど作成したテンプレートが表示されますのでチェックし「登録」をクリックします。セキュリティグループでの権限など問題なければ「状態:成功」となります。「完了」クリックして画面終了します。
「証明書 - 現在のユーザー」-「個人」-「証明書」の中に、発行および手動発行された証明書が表示されます。
有効期限や発行者、ルート証明書のパス等から AWS Private CA から発行された証明書であることが伺えます。
これで証明書の発行手順の確認は完了です。
環境削除手順
今回の試用環境をAWS上から削除する際の手順としては下記となりました。
- AWS Private CA Connectors for Active Directory の削除
「AWS Private CA Connectors for Active Directory」コンソール - Connectors for Active Directory - 一覧よりコネクタを選択して「削除」
「AWS Private CA Connectors for Active Directory」コンソール - ディレクトリの登録 - 一覧よりディレクトリを選択して「ディレクトリの登録解除」 - リソース共有の削除
「Resource Access Manager」コンソール - 自分が共有:リソース共有 - 一覧より共有を選択して「削除」 - Private CA の削除
「AWS Private Certificate Authority」コンソール - プライベート認証機関 - 一覧よりプライベート認証機関を選択して「アクション」→ 「削除」※削除されるまで最大30日かかります - AD Connector 削除
「Directory Service」コンソール → ディレクトリ - 一覧より AD Connector を選択して「アクション」-「ディレクリを削除」 - ADドメインコントローラーの削除
「EC2」コンソール - インスタンス - 一覧より ADドメインコントローラーのEC2インスタンスを選択して「インスタンスの終了」
まとめ
新機能となる AWS Private CA Connector for Active Directory は、下記のような要件がある場合にご検討いただくと良いと考えました。
- 現状 ADCS やその他の証明書発行サービスを利用しており、AWS移行に合わせてマネージドサービスとしたい
- 既に AWS Private CA を利用しており管理者が人力で行っていた証明書発行・配布を自動化したい
- 高いセキュリティ要件に対応したプライベートCAと Active Directory を連携させたい
従来ADCSは 無線環境で WPA2エンタープライズを用いた証明書認証などにも利用されてきました。これからセキュアな無線環境構築をご検討される場合に、ひとつの選択肢となりうると感じました。
今回試用は、リリースされたばかりの新機能ということで多少の異なった説明や解釈を記載してしまっているかもしれません。もし誤りがありましたら恐れ入りますがAWSやMicrosoftの公式ドキュメントを正としてご確認ください。
本BLOGが皆様のお役にたてば幸いです。
*1:参考:【Windows Server】ドメインコントローラを構築する(GUIの方法)
https://blog.serverworks.co.jp/windows-server-1-domain-controller-gui
*2:参考:ACMでプライベートCAを作成して証明書を発行してみた
https://blog.serverworks.co.jp/tech/2020/02/05/privateca-certificate/
*3:参考:Active Directory Connector の設定手順
https://blog.serverworks.co.jp/adconnector