ポリシー制御の概要

ポリシー制御は、認証局(CA)の運用と CA が発行する証明書の標準を適用します。ポリシー制御は、CA が証明書を発行する方法、リクエストに含めることができるパラメータ、受け入れられる値を定義するために設定するルールと制限です。Certificate Authority Service では、ポリシー制御は次の 2 種類のいずれかになります。

  • 証明書発行ポリシーなどの粗粒度のポリシー: 証明書発行ポリシーは CA プール全体に適用され、許可される鍵の種類、許可される証明書の有効期間、サブジェクトとサブジェクト代替名(SAN)の制約などの高レベルの制約を定義します。

  • 証明書テンプレートなどのきめ細かいポリシー: 証明書テンプレートを使用すると、発行できる証明書のタイプと、それらを発行する権限を持つユーザーを定義できます。これにより、不正使用を防ぎ、セキュリティを維持できます。証明書テンプレートを使用すると、目的ごとに異なるタイプの証明書を定義できるため、よりきめ細かい制御が可能になります。たとえば、ウェブサーバーの TLS 証明書やデベロッパーのコード署名証明書など、特定のユースケースの証明書テンプレートを作成できます。部門やチームごとにテンプレートを作成して、各チームが必要な特定の権限で証明書をリクエストできるようにすることもできます。

証明書発行ポリシーと証明書テンプレートに加えて、名前の制約などの特定のポリシー制御を適用して、CA が承認されていないドメインまたはエンティティの証明書を発行することを防ぐこともできます。

証明書発行ポリシーについて

証明書発行ポリシーは、CA プール内のすべての証明書発行に対する制御を定義します。CA マネージャーは、CA プールに証明書発行ポリシーを関連付けて、CA プール内の CA が発行できる証明書の種類に制限を定義できます。証明書発行ポリシーを使用すると、次のことができます。

  • リクエスト可能なサブジェクトと SAN の制約を追加します。これにより、証明書で識別できる対象(会社のドメインの証明書のみを許可するなど)が検証されます。
  • 証明書の ID、証明書の有効期間、鍵の種類、バックデート期間、証明書リクエスト モードの制限を定義します。
  • 発行されたすべての証明書に特定の X.509 拡張機能を追加します。

次のいずれかまたは両方のシナリオに該当する場合は、証明書発行ポリシーを使用することをおすすめします。

  1. CA プールは、明確に定義された単一のプロファイルに従って証明書を発行するように設計されています。たとえば、会社の内部ウェブサーバー専用の証明書を発行する専用の CA プールがあるとします。これらの証明書にはすべて同じ基本パラメータが必要です。

    • 発行されたすべての証明書のサブジェクトに O=My organization が含まれている。
    • すべての DNS 名の末尾が .cymbalgroup.com です。
    • 有効期間は 1 年間です。

    証明書発行ポリシーは、これらのルールを適用し、この CA プールから発行されたすべての証明書がこのプロファイルに準拠するようにします。

  2. X.509 拡張機能の共通のベースラインと、すべての証明書発行プロファイルに適用される追加の制限を定義できます。たとえば、従業員のメール署名証明書(2 年間有効)や一般公開ウェブサイトの TLS 証明書(1 年間有効)など、さまざまな種類の証明書があるとします。すべての証明書に適用されるベースライン発行ポリシーを定義できます。

    • すべての証明書のサブジェクトに会社名が含まれている必要があります。
    • 組織のセキュリティ標準に準拠した特定の X.509 拡張機能のセットを使用する必要があります。

    次に、証明書テンプレートを使用して、そのベースラインの上に各証明書タイプの特定のバリエーションを定義できます。

証明書発行ポリシーの追加については、CA プールに証明書発行ポリシーを追加するをご覧ください。

証明書テンプレートについて

証明書テンプレートは、組織内の比較的静的で明確に定義された証明書発行スキーマを表します。証明書テンプレートを使用すると、発行元の CA に関係なく、さまざまな CA プールから発行された証明書が同じ形式とプロパティを共有します。CertificateTemplate リソースには次のものが含まれます。

  • テンプレートを使用するすべての証明書リクエストで、リクエストされたサブジェクトと SAN に対して評価される Common Expression Language(CEL)式。CEL の使用方法の詳細については、CEL の使用をご覧ください。
  • サブジェクトまたはサブジェクト代替名をエンドユーザーのリクエストから発行済み証明書にコピーできるかどうかを指定する許可リスト。
  • エンドユーザーのリクエストから発行済み証明書にコピーできる X.509 拡張機能がある場合は、それを指定する許可リスト(省略可)。
  • テンプレートを使用するすべての発行済み証明書に追加される、X.509 拡張機能の値のセット(省略可)。

証明書テンプレートは、完全な垂直の証明書発行フレームワークとすることができます。詳細については、CertificateTemplate メッセージ定義全体をご覧ください。

証明書テンプレートは、証明書発行シナリオが明確に定義されている場合に使用できます。証明書テンプレートを使用すると、異なる CA プールから発行された証明書間で一貫性を維持できます。証明書テンプレートを使用して、さまざまな個人が発行できる証明書の種類を制限することもできます。

証明書テンプレートと Identity and Access Management(IAM)の条件付きロール バインディングを組み合わせて使用して、特定のサービス アカウントによって行われた証明書リクエストに適用される制約を定義することもできます。たとえば、.altostrat.com で終わる DNS 名のみを許可する証明書テンプレートを作成できます。次に、条件付きロール バインディングを追加して、特定の CA プールから証明書をリクエストするときに、そのテンプレートのみを使用する my-service-account@my-project.iam.gserviceaccount.com 権限をサービス アカウントに付与できます。これにより、サービス アカウントは、その特定の SAN 制限を持つ証明書の発行に制限されます。

証明書テンプレートの作成方法については、証明書テンプレートを作成するをご覧ください。

CA 証明書名の制約

CA サービスは、RFC 5280 ドキュメントの名前制約セクションで定義されている CA 証明書の名前制約を適用します。名前制約を使用すると、CA から発行された証明書で許可または除外される名前を制御できます。

名前制約は、X.509 証明書の名前制約拡張機能を使用して実装されます。この拡張機能を使用すると、DNS 名、IP アドレス、メールアドレス、URL などのさまざまな名前形式で、許可される Namespace と除外される Namespace を指定できます。

たとえば、名前制約を持つ CA を作成して、次の条件を適用できます。

  • DNS 名として使用できるのは myownpersonaldomain.com とそのサブドメインのみです。
  • examplepetstore.com とそのサブドメインは DNS 名として使用できません。

名前制約は、CA 自身の証明書内で定義されます。つまり、その CA が発行した証明書は、これらの制約にバインドされます。CA が証明書を発行するときに、リクエストされたサブジェクト名とサブジェクト代替名(SAN)を定義された名前制約と照合します。いずれかの名前が制約に違反している場合、証明書の発行は拒否されます。

名前制約は、CA の作成時にのみ指定できます。

ポリシー コントロールを使用するメリット

ポリシー制御は、次のことを実現するうえで役立ちます。

  • 発行できる証明書のタイプを制限し、不正な証明書が作成されて悪用されるリスクを軽減することで、セキュリティを強化します。
  • 証明書管理に関する規制要件と業界のベスト プラクティスを満たします。
  • 手作業とエラーの可能性を減らします。証明書テンプレートを使用すると、証明書を効率的かつ一貫して発行できます。
  • 明確に定義されたポリシーと強力な制御により、発行する証明書の信頼性が高まります。

ポリシー制御の適用

ユーザーが証明書をリクエストすると、CA Service は次のレベルでこれらのポリシー制御を評価します。

  1. Identity and Access Management(IAM)権限: 最初に、リクエスト元に証明書を作成するか、指定された証明書テンプレートを使用するために必要な IAM 権限があるかどうかが確認されます。これにより、承認されたユーザーのみが証明書を取得できるようになります。

  2. 証明書発行ポリシー: サービスは、CA プールの発行ポリシーに対して証明書リクエストを検証します。これにより、リクエストがその CA から発行される証明書の一般的な要件を満たすようになります。

  3. 証明書テンプレート: テンプレートが使用されている場合、リクエストはテンプレートの特定の制約に対してさらに検証されます。これにより、証明書がその用途に適していることが保証されます。

CA プールの証明書発行ポリシーと証明書テンプレートの X.509 拡張機能が証明書に追加され、同じポリシーに基づいて特定の値が破棄されます。証明書に署名する前に、CA 証明書の名前制約が証明書に対して検証され、サブジェクトが準拠していることが確認されます。

ポリシーの競合

異なるポリシー制御メカニズムを組み合わせて使用すると、異なるレベルのポリシーが競合する可能性があります。たとえば、証明書テンプレートで、CA プールの発行ポリシーで禁止されている鍵タイプ(ECDSA など)が許可されている場合があります。また、証明書テンプレートと発行ポリシーで、同じ X.509 拡張機能に異なる値を指定している場合もあります。

CA Service でポリシーの競合を管理する方法については、ポリシーの競合についてをご覧ください。

次のステップ