Azure での証明書のライフサイクル管理

Azure Automation
Azure Event Grid
Azure Key Vault

サイバーセキュリティでは、認定資格証の自動更新の設定は、セキュリティで保護された信頼性の高い環境を維持するための重要な部分になります。 証明書をタイムリーに更新または変更できないと、システムが脆弱性にさらされます。 潜在的に脆弱な領域は次のとおりです。

  • 有効期限が切れている SSL/TLS 証明書。
  • 潜在的な侵害の対象となるネットワーク。
  • セキュリティで保護されていない機密データ。
  • 企業間プロセスのためにダウンするサービス。
  • デジタル トランザクションの整合性と機密性を損なうブランドの評判の損失。

Azure Key Vault では、DigiCert または GlobalSign のように、統合された証明機関 (CA) が発行した認定資格証の自動更新がサポートされています。 統合されていない CA の場合は、手動によるアプローチが必要です。

この記事は、統合されていない CA からの認定資格証に対応する自動更新プロセスを提供することで、そのギャップを埋めます。 このプロセスにより、新しい認定資格証が Key Vault にシームレスに格納され、効率が向上し、セキュリティが強化され、さまざまな Azure リソースと統合することでデプロイが簡略化されます。

自動更新プロセスは、人的エラーを削減し、サービスの中断回数を最小限に抑えます。 認定資格証の更新を自動化すると、プロセスが高速化されるだけでなく、手動処理中に発生する可能性のあるエラーの確率が低くなります。 Key Vault の機能とその拡張機能を使用すると、操作と信頼性を最適化する効率的で自動化されたプロセスを構築できます。

認定資格証の自動更新は最初に行う作業ですが、大目的は、プロセス全体の領域でセキュリティを強化することです。 その実現には、Key Vault を使用した最小限の特権 (PoLP) または同様のアクセス制御の原則の実装方法が含まれます。 また、Key Vault の堅牢なログ記録と監視のプラクティスも重視されます。 この記事では、Key Vault を使用して認定資格証ライフサイクル全体を強化することの重要性を強調し、セキュリティ上の利点が認定資格証の格納に限定されていないことを示します。

Key Vault とその自動更新プロセスを使用すると、認定資格証を継続的に更新できます。 自動更新はデプロイ プロセスで重要な役割を果たし、Key Vault と統合される Azure サービスが最新の認定資格証の利点を有効活用するサポートをします。 この記事では、継続的な更新とアクセシビリティが、Azure サービスの全体的なデプロイ効率と信頼性にどのように寄与するかについての分析情報を提供します。

Architecture

このソリューションの基盤となるアーキテクチャの概要を次に示します。

証明書ライフサイクル管理アーキテクチャの図。

このアーキテクチャの Visio ファイルをダウンロードします。

Azure 環境は、次の Platform as a Service リソースから構成されています。同じ統合されていな CA のみが発行した認定資格証を保管する専用の Key Vault、Azure Event Grid システム トピック、ストレージ アカウント キュー、Event Grid が対象とする Webhook を公開する Azure Automation。

このシナリオでは、既存の公開キー インフラストラクチャ (PKI) が既に存在し、Microsoft Entra ID のドメインに参加している Microsoft Enterprise CA で構成されていることを前提としています。 PKI と Active Directory ドメインはどちらも、Azure またはオンプレミス、および証明書の更新用に構成する必要があるサーバーに配置できます。

更新を監視するための証明書を含む仮想マシン (VM) を Active Directory または Microsoft Entra ID に参加させる必要はありません。 唯一の要件は、CA と Hybrid Worker (CA とは異なる VM にある場合) が Active Directory に参加することです。

次のセクションでは、自動更新プロセスの詳細について説明します。

ワークフロー

この図は、Azure エコシステム内での認定資格証更新の自動化されたワークフローを示しています。

Azure エコシステム内での認定資格証更新の自動化されたワークフローの図。

  1. Key Vault の構成: 更新プロセスの初期段階では、証明書オブジェクトを、キー コンテナーの指定された「証明書」セクションに格納する必要があります。

    必須ではありませんが、証明書に受信者のメール アドレスをタグ付けすることで、カスタム電子メール通知を設定できます。 認定資格証にタグを付けると、更新プロセスが完了したときにタイムリーな通知が確実に行われます。 複数の受信者が必要な場合は、メール アドレスをコンマまたはセミコロンで区切ります。 この目的のためのタグ名は Recipient で、その値は指定された管理者の 1 つ以上のメール アドレスです。

    組み込みの認定資格証通知ではなく、タグを使用する場合は、指定された受信者を持つ特定の認定資格証に通知を適用できます。 組み込みの認定資格証通知は、すべての認定資格証に同じ受信者を使用し、Key Vault 内のすべての認定資格証に無差別に適用されます。

    組み込みの通知をソリューションに統合できますが、別の方法を使用することもできます。 組み込み通知は、もうすぐ期限が切れる証明書の有効期限についてのみ通知しますが、タグは、証明書が内部 CA で更新されたとき、および Key Vault で利用可能になったときに通知を送信できます。

  2. Key Vault 拡張機能の構成: 認定資格証を使用する必要があるサーバーに、Windows および Linux システムと互換性のある多用途ツールである Key Vault 拡張機能を装備する必要があります。 Azure サービスとしてのインフラストラクチャ (IaaS) サーバーと、Azure Arc を介して統合されるオンプレミスまたはその他のクラウド サーバーがサポートされています。 Key Vault 拡張機能を構成して、更新された認定資格証について Key Vault を定期的にポーリングします。 ポーリング間隔はカスタマイズ可能で柔軟であるため、特定の運用要件に合わせて調整できます。

  3. Event Grid 統合: 証明書の有効期限が近づくと、2 つの Event Grid サブスクリプションによって、キー コンテナーからこの重要な有効期間イベントがインターセプトされます。

  4. Event Grid トリガー: 1 つの Event Grid サブスクリプションが、証明書の更新情報をストレージ アカウント キューに送信します。 もう 1 つのサブスクリプションは、Automation アカウントで構成された Webhook を使用して Runbook の起動をトリガーします。 ランブックが認定資格証の更新に失敗したまたは CA が使用できない場合、その時点からキューがクリアされるまで、スケジュールされたプロセスで Runbook の更新が再試行されます。 このプロセスによって、ソリューションが堅牢になります。

    ソリューションの回復性を高めるには、配信不能の場所メカニズムを設定します。 これは、Event Grid からサブスクリプション ターゲット、ストレージ キュー、Webhook へのメッセージ転送中に発生する可能性のある潜在的なエラーを管理します。

  5. ストレージ アカウント キュー: Runbook は、Automation の Hybrid Runbook Worker として構成された CA サーバー内で起動します。 期限切れの証明書の名前と Runbook をホストするキー コンテナーの名前を含む、ストレージ アカウント キュー内のすべてのメッセージを受信します。 キュー内の各メッセージに対して、次の手順が実行されます。

  6. 証明書の更新: Runbook のスクリプトは Azure に接続して、生成時に設定した証明書のテンプレート名を取得します。 テンプレートは、生成する証明書の属性と目的を定義する証明機関の構成コンポーネントです。

    スクリプトは Key Vault に接続した後、証明書の更新要求を開始します。 この要求により、Key Vault が証明書署名要求 (CSR) を生成し、元の認定資格証を生成したのと同じテンプレートが適用されます。 このプロセスにより、更新された証明書が定義済みのセキュリティ ポリシーと一致します。 認証および承認プロセスのセキュリティの詳細については、「セキュリティ」セクションを参照してください。

    スクリプトによって CSR がダウンロードされ、CA に送信されます。

    CA は、正しいテンプレートに基づいて新しい x509 証明書を生成し、スクリプトに送り返します。 この手順により、更新された証明書が定義済みのセキュリティ ポリシーと一致します。

  7. 証明書のマージと Key Vault の更新: スクリプトによって、更新された証明書がキー コンテナーにマージされ、更新プロセスが終了し、キューからメッセージが削除されます。 プロセス全体を通じて、証明書の秘密キーがキー コンテナーから抽出されることはありません。

  8. 監視と電子メール通知: Automation アカウント、Key Vault、ストレージ アカウント キュー、Event Grid など、さまざまな Azure コンポーネントが実行するすべての操作が、監視を有効にするために Azure Monitor ログ ワークスペース内に記録されます。 証明書がキー コンテナーにマージされると、スクリプトは結果を通知する電子メール メッセージを管理者に送信します。

  9. 認定資格証の取得: このフェーズでは、サーバー上の Key Vault 拡張機能が重要な役割を果たします。 この拡張機能によって、証明書を使用しているサーバーのローカル ストアに、キー コンテナーから最新バージョンの証明書が自動的にダウンロードされます。 Key Vault 拡張機能を持つ複数のサーバーを構成して、Key Vault から同じ認定資格証 (ワイルドカードまたは複数の Subject Alternative Name (SAN)) を取得できます。

コンポーネント

このソリューションでは、さまざまなコンポーネントを使用して、Azure での証明書の自動更新を処理します。 以下のセクションでは、各コンポーネントとその具体的な目的について説明します。

Key Vault 拡張機能

Key Vault 拡張機能は認定資格証の更新を自動化する上で重要な役割を果たします。また、自動化を必要とするサーバーにインストールされている必要があります。 Windows サーバーでのインストール手順の詳細については、「Windows 用の Key Vault 拡張機能」を参照してください。 Linux サーバーでのインストール手順の詳細については、「Linux 用の Key Vault 拡張機能」を参照してください。 Azure Arc 対応サーバーの詳細については、「Arc 対応サーバー用の Key Vault 拡張機能」を参照してください。

Key Vault 拡張機能の構成パラメーターは次のとおりです。

  • キー コンテナ―名: 更新用の証明書を含むキー コンテナー。
  • 証明書名: 更新する証明書の名前。
  • 証明書ストア、名前、場所: 証明書が格納されている証明書ストア。 Windows サーバーでは、名前場所の既定値はそれぞれ MyLocalMachine で、コンピューターの個人用証明書ストアになります。 Linux サーバーでは、既定値が AzureKeyVault との前提でファイル システム パスを指定できます。これは Key Vault の証明書ストアになります。
  • linkOnRenewal: 認定資格証を更新時にサーバーにリンクするかどうかを示すフラグ。 Windows マシンで true に設定されていると、ストア内の新しい証明書がコピーされ、古い証明書にリンクされ、証明書が効果的に再バインドされます。 既定値は false で、明示的なバインディングが必要であることを意味します。
  • pollingIntervalInS: 証明書の更新をチェックする Key Vault 拡張機能のポーリング間隔。 既定値は 3600 秒 (1 時間) です。
  • authenticationSetting: Key Vault 拡張機能の認証設定。 Azure サーバーの場合はこの設定を省略でき、VM のマネージド ID が割り当てられたシステムがキー コンテナーに対して使用されます。 オンプレミス サーバーの場合、設定 msiEndpoint = "http://localhost:40342/metadata/identity" を指定することで、Azure Arc オンボード中に作成されたコンピューター オブジェクトに関連付けられているサービス プリンシパルが使用されます。

Note

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

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

Event Grid は、Azure 内のイベント ドリブン通信を処理します。 関連するイベントを監視するようにシステム トピックとイベント サブスクリプションを設定して、Event Grid を構成します。 関連するイベントには、証明書の有効期限アラート、自動化ワークフロー内でのアクションのトリガー、ストレージ アカウント キューへのメッセージの投稿などがあります。 次のパラメーターを使用して Event Grid システム トピックを構成します。

  • ソース: 証明書を含むキー コンテナーの名前。
  • ソースの種類: ソースの型。 たとえば、このソリューションのソースの種類は Azure Key Vault になります。
  • イベントの種類: 監視するイベントの型。 たとえば、このソリューションのイベントの種類は Microsoft.KeyVault.CertificateNearExpiry になります。 このイベントは、証明書の有効期限が近いときにトリガーされます。
  • Webhook のサブスクリプション:
    • サブスクリプション名: イベント サブスクリプションの名前。
    • エンドポイントの種類: 使用するエンドポイントの型。 たとえば、このソリューションのエンドポイントの種類は Webhook になります。
    • エンドポイント: Automation アカウント Runbook に関連付けられている Webhook の URL。 詳細については、「Automation アカウント」のセクションを参照してください。
  • StorageQueue のサブスクリプション:
    • サブスクリプション名: イベント サブスクリプションの名前。
    • エンドポイントの種類: 使用するエンドポイントの型。 たとえば、このソリューションのエンドポイントの種類は StorageQueue になります。
    • エンドポイント: ストレージ アカウント キュー。

代替

このソリューションでは、Automation アカウントを使用して証明書の更新プロセスを調整し、Hybrid Runbook Worker を使用して、オンプレミスまたは他のクラウド内の CA と統合する柔軟性を提供します。

別の方法としては、Logic Apps を使用します。 2 つのアプローチの主な違いは、Automation アカウントが Platform as a Service (PaaS) ソリューションであるのに対し、Logic Apps は、Software as a Service (SaaS) ソリューションであるという点です。

Logic Apps の主な利点は、フル マネージド サービスであるということです。 基になるインフラストラクチャについて心配する必要はありません。 また、Logic Apps は外部コネクタと簡単に統合でき、Microsoft Teams や Microsoft 365 との連携など、通知機能の可能性の範囲が広がります。

Logic Apps には Hybrid Runbook Worker に似た機能がなく、CA との統合の柔軟性が低くなるため、Automation アカウントが推奨されるアプローチです。

シナリオの詳細

すべての組織が、証明書のライフサイクルを安全かつ効率的に管理する必要があります。 有効期限が切れる前に証明書を更新しないと、サービスが中断され、ビジネスに多大なコストが発生する可能性があります。

通常、企業は複雑な IT インフラストラクチャを運用しており、証明書のライフサイクルを担当する複数のチームもそこに含まれます。 手動による証明書更新プロセスはその性質上、多くの場合エラーを伴い、貴重な時間を消費します。

このソリューションは、Microsoft 証明書サービスによって発行される証明書の更新を自動化することで、この問題に対処します。 このサービスは、Web サーバー、SQL サーバーなどのさまざまなサーバー アプリケーションや、暗号化、否認防止、署名の目的、および Key Vault 内のタイムリーな更新とセキュリティで保護された認定資格証ストレージのために広く使用されています。 サービスと Azure サーバーおよびオンプレミス サーバーとの互換性により、柔軟なデプロイがサポートされます。

考えられるユース ケース

このソリューションは、以下のようなさまざまな業界の組織に対応します。

  • サーバー証明書の生成に Microsoft 証明書サービスを使用する組織。
  • 認定資格証の更新プロセスを自動化して、運用を高速化するとともにエラーを最小限に抑える必要がある組織。これは、ビジネス損失とサービス レベル アグリーメント (SLA) 違反を回避するのに役立ちます。
  • Key Vault などのリポジトリにセキュリティで保護された証明書ストレージが必要な組織。

このアーキテクチャは、アプリケーション ランディング ゾーン サブスクリプション全体の基本的なデプロイ アプローチとして機能します。

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

キー コンテナー システム内では、証明書は暗号化されたシークレットとして安全に格納され、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 の認定資格証ストア内の GetList のアクセス許可を付与する必要があります。

ストレージ アカウント キューでは、Automation アカウント ID に Storage Queue Data ContributorReader and Data AccessReader ロールが必要です。

Key Vault 拡張機能が Azure VM にデプロイされるシナリオでは、認証は VM のマネージド ID を介して行われます。 しかし、Azure Arc 対応サーバーにデプロイされる場合は、認証はサービス プリンシパルを使用して処理されます。 そのため、マネージド ID とサービス プリンシパルの両方に、証明書を格納するキー コンテナー内のキー コンテナー シークレット ユーザー ロールを割り当てる必要があります。 証明書はシークレットとしてキー コンテナーに格納されるため、シークレット ロールを使用する必要があります。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。

このソリューションでは、コストが最適化される従量課金制のフレームワークの下で動作する 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、Azure Security Center とのシームレスな統合により、証明書の更新プロセスの継続的な監視が容易になります。 異常検出をサポートし、堅牢なセキュリティ対策を確実に維持します。

このシナリオのデプロイ

この記事で説明されている環境をデプロイするには、下のボタンを選択します。 約 2 分でデプロイは完了し、Key Vault、2 つのサブスクリプションで構成された Event Grid システム トピック、certlc キューを含むストレージ アカウント、RunbookEvent Grid にリンクされた Webhook を含む Automation アカウントが作成されます。

Azure にデプロイする

デプロイに必要なパラメーターの詳細については、コード サンプルのポータルを参照してください。

重要

完全なラボ環境をデプロイして、証明書の自動更新ワークフロー全体をデモンストレーションすることができます。 コード サンプルを使用して、以下のリソースをデプロイします。

  • ドメイン コントローラー VM 内の Active Directory Domain Services (AD DS)。
  • CA VM 内の Active Directory 証明書サービス (AD CS)。ドメインに参加し、更新する証明書を登録するためのテンプレート WebServerShort で構成されます。
  • E メール通知を送信するために CA の同じ VM にインストールされた Windows SMTP サーバー。 MailViewer も、送信された電子メール通知を確認するためにインストールされます。
  • Key Vault 拡張機能から更新された認定資格証を取得するために、ドメイン コントローラーの VM にインストールされた KeyVault 拡張機能

Azure にデプロイする

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

Key Vault
Windows 用の Azure Key Vault 拡張機能
Linux 用の Azure Key Vault 拡張機能
Azure Automation とは
Azure Automation の Hybrid Runbook Worker
Azure Event Grid