Azure での証明書のライフサイクル管理
サイバーセキュリティでは、認定資格証の自動更新の設定は、セキュリティで保護された信頼性の高い環境を維持するための重要な部分になります。 証明書をタイムリーに更新または変更できないと、システムが脆弱性にさらされます。 潜在的に脆弱な領域は次のとおりです。
- 有効期限が切れている TLS/SSL 証明書。
- 潜在的な侵害の対象となるネットワーク。
- セキュリティで保護されていない機密データ。
- 企業間プロセスのためにダウンするサービス。
- デジタル トランザクションの整合性と機密性を損なうブランドの評判の損失。
Azure Key Vault では、DigiCert や GlobalSign などの統合証明機関 (CA) によって発行された証明書の自動更新がサポートされています。 非整数 CA の場合は、 手動 によるアプローチが必要です。
この記事は、統合されていない CA からの認定資格証に対応する自動更新プロセスを提供することで、そのギャップを埋めます。 このプロセスにより、新しい認定資格証が Key Vault にシームレスに格納され、効率が向上し、セキュリティが強化され、さまざまな Azure リソースと統合することでデプロイが簡略化されます。
自動更新プロセスは、人的エラーを削減し、サービスの中断回数を最小限に抑えます。 証明書の更新を自動化すると、更新プロセスが高速化され、手動処理中にエラーが発生する可能性が低くなります。 Key Vault の機能とその拡張機能を使用すると、操作と信頼性を最適化する効率的で自動化されたプロセスを構築できます。
証明書の自動更新が最初の焦点ですが、より広範な目的は、プロセスのすべての領域でセキュリティを強化することです。 この作業には、Key Vault を使用して最小限の特権または同様のアクセス制御の原則を実装する方法が含まれます。 また、Key Vault の堅牢なログ記録と監視のプラクティスも重視されます。 この記事では、Key Vault を使用して認定資格証ライフサイクル全体を強化することの重要性を強調し、セキュリティ上の利点が認定資格証の格納に限定されていないことを示します。
Key Vault とその自動更新プロセスを使用すると、認定資格証を継続的に更新できます。 自動更新はデプロイ プロセスで重要な役割を果たし、Key Vault と統合される Azure サービスが最新の認定資格証の利点を有効活用するサポートをします。 この記事では、継続的な更新とアクセシビリティが、Azure サービスの全体的なデプロイ効率と信頼性にどのように寄与するかについての分析情報を提供します。
アーキテクチャ
次の図は、このソリューションの基盤となるアーキテクチャの概要を示しています。
このアーキテクチャの Visio ファイル をダウンロードします。
Azure 環境は、次のサービスとしてのプラットフォーム (PaaS) リソースで構成されます。
同じ非組み込み CA によって発行された証明書の格納専用のキー コンテナー
Azure Event Grid のシステム トピック
ストレージ アカウント キュー
Event Grid の対象となる Webhook を公開する Azure Automation アカウント
期限切れ証明書と期限切れの証明書のプロセスと状態を監視するために、Log Analytics によってデータが格納され、ワークスペースによって表形式とグラフィカル ダッシュボードの形式で表示されます。
このシナリオでは、既存の公開キー インフラストラクチャ (PKI) が既に存在し、Microsoft Entra ID のドメインに参加している Microsoft Enterprise CA で構成されていることを前提としています。 PKI と Active Directory ドメインの両方を、証明書の更新用に構成された Azure またはオンプレミス のサーバー上に配置できます。
更新を監視する証明書を持つ仮想マシン (VM) を Active Directory または Microsoft Entra ID に参加させる必要はありません。 唯一の要件は、CA とハイブリッド worker が CA とは異なる VM にある場合、Active Directory に参加することです。
次の図は、Azure エコシステム内での証明書更新の自動ワークフローを示しています。
ワークフロー
次のワークフローは、前の図に対応しています。
Key Vault の構成: 更新プロセスの最初のフェーズでは、キー コンテナーの指定された証明書セクションに証明書オブジェクトを格納する必要があります。
必須ではありませんが、証明書に受信者のメール アドレスをタグ付けすることで、カスタム電子メール通知を設定できます。 認定資格証にタグを付けると、更新プロセスが完了したときにタイムリーな通知が確実に行われます。 複数の受信者が必要な場合は、メール アドレスをコンマまたはセミコロンで区切ります。 この目的のタグ名は Recipient で、その値は指定された管理者の 1 つ以上のメール アドレスです。
組み込みの証明書通知の代わりにタグを使用する場合は、指定された受信者を持つ特定の証明書に通知を適用できます。 組み込みの認定資格証通知は、すべての認定資格証に同じ受信者を使用し、Key Vault 内のすべての認定資格証に無差別に適用されます。
組み込みの通知をソリューションに統合できますが、別の方法を使用することもできます。 組み込み通知では、今後の証明書の有効期限についてのみ通知できますが、タグは、証明書が内部 CA で更新されたとき、および Key Vault で利用可能になったときに通知を送信できます。
Key Vault 拡張機能の構成: 証明書を使用する必要があるサーバーには、 Windows および Linux システムと互換性のある汎用性の高いツールである Key Vault 拡張機能を用意する必要があります。 Azure サービスとしてのインフラストラクチャ (IaaS) サーバーと、 Azure Arc を介して統合されるオンプレミスまたはその他のクラウド サーバーがサポートされています。 Key Vault 拡張機能を構成して、更新された認定資格証について Key Vault を定期的にポーリングします。 ポーリング間隔はカスタマイズ可能で柔軟であるため、特定の運用要件に合わせて調整できます。
注
Key Vault 拡張機能は、Linux RedHat および CentOS では使用できません。 ソリューションをこれらのシステムに拡張するには、Key Vault で証明書の更新を定期的にチェックし、サーバーに適用する
script_for_not_supported_ARC_on_Linux_distro
スクリプトをスケジュールします。 このスクリプトは、Azure ネイティブ VM (IaaS) と Azure Arc に統合されたオンプレミス サーバーで実行できます。Event Grid の統合: 証明書の有効期限が近づくと、2 つの Event Grid サブスクリプションがキー コンテナーからこの重要な有効期間イベントをインターセプトします。
Event Grid トリガー: 1 つの Event Grid サブスクリプションが、証明書の更新情報をストレージ アカウント キューに送信します。 もう 1 つのサブスクリプションは、Automation アカウントで構成された Webhook を使用して Runbook の起動をトリガーします。 ランブックが認定資格証の更新に失敗したまたは CA が使用できない場合、その時点からキューがクリアされるまで、スケジュールされたプロセスで Runbook の更新が再試行されます。 このプロセスによって、ソリューションが堅牢になります。
ソリューションの回復性を高めるために、 配信不能の場所 メカニズムを設定します。 Event Grid からサブスクリプション ターゲット、ストレージ キュー、Webhook へのメッセージの転送中に発生する可能性のあるエラーを管理します。
ストレージ アカウント キュー: Runbook は、Automation Hybrid Runbook Worker として構成されている CA サーバー内で起動します。 期限切れの証明書の名前と Runbook をホストするキー コンテナーの名前を含む、ストレージ アカウント キュー内のすべてのメッセージを受信します。 キュー内の各メッセージに対して、次の手順が実行されます。
証明書の更新: Runbook のスクリプトは Azure に接続して、生成時に設定した証明書のテンプレート名を取得します。 テンプレートは、生成する証明書の属性と目的を定義する証明機関の構成コンポーネントです。
スクリプトは Key Vault に接続した後、証明書の更新要求を開始します。 この要求により、Key Vault が証明書署名要求 (CSR) を生成し、元の認定資格証を生成したのと同じテンプレートが適用されます。 このプロセスにより、更新された証明書が定義済みのセキュリティ ポリシーと一致します。 認証および承認プロセスのセキュリティの詳細については、「 セキュリティ 」セクションを参照してください。
スクリプトによって CSR がダウンロードされ、CA に送信されます。
CA は、正しいテンプレートに基づいて新しい x509 証明書を生成し、スクリプトに送り返します。 この手順により、更新された証明書が定義済みのセキュリティ ポリシーと一致します。
証明書のマージと Key Vault の更新: スクリプトによって、更新された証明書がキー コンテナーにマージされます。 この手順では、更新プロセスを完了し、キューからメッセージを削除します。 プロセス全体を通じて、証明書の秘密キーがキー コンテナーから抽出されることはありません。
監視と電子メール通知: Automation アカウント、Key Vault、ストレージ アカウント キュー、Event Grid など、さまざまな Azure コンポーネントが実行するすべての操作は、監視を有効にするために Azure Monitor ログ ワークスペース内に記録されます。 証明書がキー コンテナーにマージされると、スクリプトは結果を通知する電子メール メッセージを管理者に送信します。
証明書の取得: このフェーズでは、サーバー上の Key Vault 拡張機能が重要な役割を果たします。 この拡張機能によって、証明書を使用しているサーバーのローカル ストアに、キー コンテナーから最新バージョンの証明書が自動的にダウンロードされます。 Key Vault 拡張機能を持つ複数のサーバーを構成して、Key Vault から同じ認定資格証 (ワイルドカードまたは複数の Subject Alternative Name (SAN)) を取得できます。
Key Vault 拡張機能をインストールできない Linux ディストリビューションの場合は、拡張機能と同じ機能を実現するように script_for_not_supported_ARC_on_Linux_distro スクリプトをスケジュールします。
コンポーネント
このソリューションでは、さまざまなコンポーネントを使用して、Azure での証明書の自動更新を処理します。 以下のセクションでは、各コンポーネントとその具体的な目的について説明します。
Key Vault 拡張機能
Key Vault 拡張機能は認定資格証の更新を自動化する上で重要な役割を果たします。また、自動化を必要とするサーバーにインストールされている必要があります。 Windows サーバーでのインストール手順の詳細については、「Windows 用 Key Vault 拡張機能」を参照してください。 Linux サーバーのインストール手順の詳細については、「Linux 用 Key Vault 拡張機能」を参照してください。 Azure Arc 対応サーバーの詳細については、Arc 対応サーバー の Key Vault 拡張機能に関するページを参照してください。
注
次のスクリプトは、Azure Cloud Shell から実行して Key Vault 拡張機能を構成できるサンプルです。
Key Vault 拡張機能の構成パラメーターは次のとおりです。
Key Vault 名: 更新用の証明書を含むキー コンテナー。
証明書名: 更新する証明書の名前。
証明書ストア、名前、および場所: 証明書が格納されている証明書ストア。 Windows サーバーでは、[ 名前] の既定値は
My
、 場所 はLocalMachine
(コンピューターの個人用証明書ストア) です。 Linux サーバーでは、既定値がAzureKeyVault
との前提でファイル システム パスを指定できます。これは Key Vault の証明書ストアになります。linkOnRenewal: 更新時に証明書をサーバーにリンクする必要があるかどうかを示すフラグ。 Windows マシンで
true
に設定されている場合、ストア内の新しい証明書がコピーされ、古い証明書にリンクされ、証明書が効果的に再バインドされます。 既定値はfalse
であるため、明示的なバインディングが必要です。pollingIntervalInS: この値は、証明書の更新を確認する Key Vault 拡張機能のポーリング間隔を示します。 既定値は
3600
秒 (1 時間) です。authenticationSetting: Key Vault 拡張機能の認証設定。 Azure サーバーの場合は、この設定を省略できるため、VM のシステム割り当てマネージド ID がキー コンテナーに対して使用されます。 オンプレミス サーバーの場合は、Azure Arc オンボード中に作成されたコンピューター オブジェクトに関連付けられているサービス プリンシパルが使用されるように、
msiEndpoint = "http://localhost:40342/metadata/identity"
設定を指定します。
注
Key Vault 拡張機能パラメーターは初期セットアップ時にのみ指定します。 この方法により、更新プロセス全体を通じて変更が行われることはありません。
Automation アカウント
Automation アカウントは、証明書の更新プロセスを処理します。 PowerShell スクリプトを使用して、Runbook でアカウントを構成する必要があります。
また、Hybrid Worker グループを作成する必要があります。 Hybrid Worker グループを、Runbook を起動するために、CA の同じ Active Directory ドメイン (理想的には CA 自体) の Windows Server メンバーに関連付けます。
Runbook には、Hybrid Runbook Worker から開始された Webhook が関連付けられている必要があります。 Event Grid システム トピックのイベント サブスクリプションで Webhook URL を構成します。
ストレージ アカウント キュー
ストレージ アカウント キューには、更新する証明書の名前と、証明書を含むキー コンテナーの名前を含むメッセージが格納されます。 Event Grid システム トピックのイベント サブスクリプションでストレージ アカウント キューを構成します。 キューは、証明書の有効期限通知イベントからスクリプトを切り離す処理を行います。 また、キュー メッセージ内のイベントの保持をサポートします。 この方法により、スクリプトの実行中に問題が発生した場合でも、スケジュールされたジョブを通じて証明書の更新プロセスを確実に繰り返すことができます。
ハイブリッドランブックワーカー
Hybrid Runbook Worker は、Runbook を使用する上で重要な役割を果たします。 新しいインストールでサポートされているモードである Azure Hybrid Worker 拡張機能 メソッドを使用して Hybrid Runbook Worker をインストールする必要があります。 これを作成し、CA の同じ Active Directory ドメイン (理想的には CA 自体) の Windows Server メンバーに関連付けます。
Key Vault (キー・ボールト)
Key Vault は、セキュリティで保護された証明書のリポジトリです。 キー コンテナーのイベント セクションで、Event Grid システム トピックを Automation アカウントの webhook とサブスクリプションに関連付けます。
イベントグリッド
Event Grid は、Azure 内のイベント ドリブン通信を処理します。 関連するイベントを監視するようにシステム トピックとイベント サブスクリプションを設定して、Event Grid を構成します。 関連するイベントには、証明書の有効期限アラート、自動化ワークフロー内でのアクションのトリガー、ストレージ アカウント キューへのメッセージの投稿などがあります。 次のパラメーターを使用して Event Grid システム トピックを構成します。
源: 証明書を含むキー コンテナーの名前。
ソースの種類: ソースの型。 たとえば、このソリューションのソースの種類は
Azure Key Vault
になります。イベントの種類: 監視するイベントの種類。 たとえば、このソリューションのイベントの種類は
Microsoft.KeyVault.CertificateNearExpiry
になります。 このイベントは、証明書の有効期限が近いときにトリガーされます。Webhook のサブスクリプション:
サブスクリプション名: イベント サブスクリプションの名前。
エンドポイントの種類: 使用するエンドポイントの種類。 たとえば、このソリューションのエンドポイントの種類は
Webhook
になります。エンドポイント: Automation アカウント Runbook に関連付けられている Webhook の URL。 詳細については、「 Automation アカウント 」セクションを参照してください。
StorageQueue のサブスクリプション:
サブスクリプション名: イベント サブスクリプションの名前。
エンドポイントの種類: 使用するエンドポイントの種類。 たとえば、このソリューションのエンドポイントの種類は
StorageQueue
になります。エンドポイント: ストレージ アカウント キュー。
Log Analytics ワークスペースと Azure ブック
このソリューションでは、Log Analytics ワークスペースと Azure ブックを使用して、Key Vault に格納されている証明書の状態の監視と視覚化を強化します。 これらのコンポーネントは、証明書の正常性の可視性を維持する上で重要な役割を果たします。
Log Analytics ワークスペースは 、証明書の状態に関するデータを収集して格納します。 証明書の有効期限が切れているか、間もなく期限切れになるか、まだ有効であるかを識別します。
Azure ブック は Log Analytics ワークスペースからデータを取得し、円グラフや詳細テーブルなどの視覚的な表現でダッシュボードに表示します。 証明書は 、期限切れではない (緑)、 期限切れ間もなく (黄色)、 期限切れ (赤) に分類されます。
次のコンポーネントは、ブック内の証明書情報を取得して表示します。
データ インジェスト Runbook は Azure から直接実行され、ハイブリッド Worker のコンテキストは必要ありません。 Key Vault から証明書データを取得し、Log Analytics ワークスペースで定義されているカスタム テーブルに送信します。 Runbook はスケジュールされた周期で実行されます。
ブックは、カスタム テーブルのデータに対してクエリを実行し、円グラフと詳細テーブルの両方に表示します。 有効期限の状態に基づいて証明書が強調表示されます。
これらのコンポーネントを統合することで、ソリューションは証明書ライフサイクル管理に対するより包括的なアプローチを構築します。
代替
このソリューションでは、Automation アカウントを使用して証明書の更新プロセスを調整し、Hybrid Runbook Worker を使用して、オンプレミスまたは他のクラウド内の CA と統合する柔軟性を提供します。
別の方法として、Azure Logic Apps を使用します。 2 つのアプローチの主な違いは、Automation アカウントが PaaS ソリューションであり、Logic Apps がサービスとしてのソフトウェア (SaaS) ソリューションであることです。
Logic Apps の主な利点は、フル マネージド サービスであるということです。 基になるインフラストラクチャについて心配する必要はありません。 また、Logic Apps は外部コネクタと簡単に統合できます。 この機能により、Microsoft Teamsや Microsoft 365 との連携など、通知の可能性が広がります。
Logic Apps には Hybrid Runbook Worker に似た機能がないため、CA との統合の柔軟性が低下するため、Automation アカウントをお勧めします。
シナリオの詳細
すべての組織が、証明書のライフサイクルを安全かつ効率的に管理する必要があります。 有効期限が切れる前に証明書を更新しないと、サービスが中断され、ビジネスに多大なコストが発生する可能性があります。
企業は通常、証明書のライフサイクルを担当する複数のチームが関与する複雑な IT インフラストラクチャを運用します。 手動による証明書更新プロセスはその性質上、多くの場合エラーを伴い、貴重な時間を消費します。
このソリューションは、Microsoft Certificate Service によって発行された証明書の更新を自動化することで、これらの課題に対処します。 このサービスは、Web サーバー、SQL サーバーなどのさまざまなサーバー アプリケーションや、暗号化、否認防止、署名の目的、および Key Vault 内のタイムリーな更新とセキュリティで保護された認定資格証ストレージのために広く使用されています。 サービスと Azure サーバーおよびオンプレミス サーバーとの互換性により、柔軟なデプロイがサポートされます。
考えられるユース ケース
このソリューションは、以下のようなさまざまな業界の組織に対応します。
サーバー証明書の生成に Microsoft 証明書サービスを使用する組織。
認定資格証の更新プロセスを自動化して、運用を高速化するとともにエラーを最小限に抑える必要がある組織。これは、ビジネス損失とサービス レベル アグリーメント (SLA) 違反を回避するのに役立ちます。
Key Vault などのリポジトリにセキュリティで保護された証明書ストレージが必要な組織。
このアーキテクチャは、アプリケーション ランディング ゾーン サブスクリプション全体の基本的なデプロイ アプローチとして機能します。
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの 設計レビューチェックリスト」を参照してください。
Key Vault システム内では、証明書は暗号化されたシークレットとしてより安全に格納され、Azure ロールベースのアクセス制御 (RBAC) によって保護されます。
証明書の更新プロセス全体を通して、ID を使用するコンポーネントは次のとおりです。
VM のアカウントで動作する、Hybrid Runbook Worker のシステム アカウント。
Key Vault 拡張機能。VM に関連付けられているマネージド ID を使用します。
指定されたマネージド ID を使用する、Automation アカウント。
最小限の特権の原則は、証明書の更新手順に関与するすべての ID に厳密に適用されます。
Hybrid Runbook Worker サーバーのシステム アカウントには、新しい証明書を生成する 1 つ以上の証明書テンプレートに証明書を登録する権限が必要です。
証明書を含むキー コンテナーでは、Automation アカウント ID に Key Vault Certificate Officer
ロールが必要です。 さらに、証明書アクセスを必要とするサーバーには、Key Vault 証明書ストア内の Get
と List
のアクセス許可が必要です。
ストレージ アカウント キューでは、Automation アカウント ID に Storage Queue Data Contributor
、Reader and Data Access
、Reader
ロールが必要です。
Key Vault 拡張機能が Azure VM にデプロイされるシナリオでは、認証は VM のマネージド ID を介して行われます。 ただし、Azure Arc 対応サーバーにデプロイされている場合、認証はサービス プリンシパルを使用して処理されます。 そのため、マネージド ID とサービス プリンシパルの両方に、証明書を格納する Key Vault 内の Key Vault シークレット ユーザー ロールを割り当てる必要があります。 証明書はシークレットとしてキー コンテナーに格納されるため、シークレット ロールを使用する必要があります。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「 コストの最適化」のデザイン レビュー チェックリストを参照してください。
このソリューションでは、コストが最適化される従量課金制のフレームワークの下で動作する Azure PaaS ソリューションを使用します。 費用は、更新が必要な証明書の数と、Key Vault 拡張機能を備えたサーバーの数によって決まります。その結果、オーバーヘッドが少なくなります。
Key Vault 拡張機能と Hybrid Runbook Worker の使用に伴う費用は、インストールの選択とポーリング間隔によって異なります。 Event Grid のコストは、Key Vault によって生成されるイベントの量に対応します。 同時に、Automation アカウントのコストは、使用する Runbook の数と関連付けられます。
Key Vault のコストは、選択した SKU (Standard または Premium)、格納されている証明書の量、証明書に対して実行される操作の頻度など、さまざまな要因によって異なります。
Key Vault に対して説明されている構成に類似した考慮事項が、ストレージ アカウントにも同様に適用されます。 このシナリオでは、ローカル冗長ストレージのレプリケーションを使用する Standard SKU が、ストレージ アカウントには十分です。 一般に、ストレージ アカウント キューのコストは最小限に抑えられます。
このソリューションの実装コストを見積もるために、 Azure 料金計算ツールを使用します。 この記事で説明するサービスを入力します。
オペレーショナル エクセレンス
オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「 オペレーショナル エクセレンスの設計レビュー チェックリスト」を参照してください。
認定資格証の自動更新手順では、キー コンテナー内のすべての証明書に適用できる標準化されたプロセスを使用して、証明書を安全に格納します。
Event Grid と統合すると、Microsoft Teams または Microsoft 365 への通知や更新プロセスの合理化などの補助的なアクションがトリガーされます。 この統合により、証明書の更新時間が大幅に短縮され、ビジネスの中断や SLA 違反につながる可能性のあるエラーの可能性が軽減されます。
また、Azure Monitor、Microsoft Sentinel、Microsoft Copilot for Security、Microsoft Defender for Cloud とのシームレスな統合により、証明書の更新プロセスの継続的な監視が容易になります。 異常検出をサポートし、堅牢なセキュリティ対策を確実に維持します。
このシナリオのデプロイ
この記事で説明されている環境をデプロイするには、下のボタンを選択します。 デプロイが完了するまでに約 2 分かかり、キー コンテナー、2 つのサブスクリプションで構成された Event Grid システム トピック、 certlc キューを含むストレージ アカウント、および Event Grid にリンクされた Runbook と Webhook を含む Automation アカウントが作成されます。
デプロイに必要なパラメーターの詳細については、 コード サンプル ポータルを参照してください。
重要
完全なラボ環境をデプロイして、証明書の自動更新ワークフロー全体をデモンストレーションすることができます。 コード サンプルを使用して、次のリソースをデプロイします。
- ドメイン コントローラー VM 内の Active Directory Domain Services (AD DS)。
- 更新する証明書を登録するためのテンプレート WebServerShort で構成された、ドメインに参加している CA VM 内の Active Directory 証明書サービス (AD CS)。
- 電子メール通知を送信するために CA の同じ VM にインストールされている Windows Simple Mail Transfer Protocol (SMTP) サーバー 。 MailViewer も、送信された電子メール通知を確認するためにインストールされます。
- Key Vault 拡張機能から更新された証明書を取得するために、ドメイン コントローラーの VM にインストールされている Key Vault 拡張機能。
共同作成者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
プリンシパルの作成者:
- Fabio Masciotra |プリンシパル コンサルタント
- アンジェロ・マズッキ |プリンシパル コンサルタント
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。