ポリシー制御の概要
ポリシー制御は、認証局(CA)の運用と CA が発行する証明書の標準を適用します。ポリシー制御は、CA が証明書を発行する方法、リクエストに含めることができるパラメータ、受け入れられる値を定義するために設定するルールと制限です。Certificate Authority Service では、ポリシー制御は次の 2 つのいずれかです。
証明書発行ポリシーなどの大まかなポリシー: 証明書発行ポリシーは CA プール全体に適用され、許可される鍵の種類、許可される証明書の有効期間、サブジェクトとサブジェクト代替名(SAN)の制約などの高レベルの制約を定義します。
証明書テンプレートなどのきめ細かいポリシー: 証明書テンプレートを使用すると、発行できる証明書の種類と発行する権限を持つユーザーを定義して、不正使用を防ぎ、セキュリティを維持できます。証明書テンプレートを使用すると、目的に応じて異なる種類の証明書を定義できるため、よりきめ細かい制御が可能になります。たとえば、ウェブサーバー用の TLS 証明書やデベロッパー用のコード署名証明書など、特定のユースケース用の証明書テンプレートを作成できます。さまざまな部門やチーム用にテンプレートを作成して、各チームが必要な特定の権限を持つ証明書をリクエストできるようにすることもできます。
証明書発行ポリシーと証明書テンプレートに加えて、名前の制約などの特定のポリシー制御を適用して、CA が未承認のドメインまたはエンティティの証明書を発行しないようにすることもできます。
証明書発行ポリシーについて
証明書発行ポリシーは、CA プール内のすべての証明書発行を制御します。CA マネージャーは、CA プールに証明書発行ポリシーを関連付けて、CA プール内の CA が発行できる証明書の種類に制限を定義できます。証明書発行ポリシーを使用すると、次のことを行えます。
- リクエストできるサブジェクトと SAN に制約を追加します。これにより、証明書で識別できるユーザーまたはデバイスが検証されます(会社のドメインの証明書のみを許可するなど)。
- 証明書 ID、証明書の有効期間、鍵の種類、証明書リクエスト モードの制限を定義します。
- 発行されるすべての証明書に特定の X.509 拡張機能を追加します。
次のいずれかまたは両方のシナリオが該当する場合は、証明書発行ポリシーを使用することをおすすめします。
CA プールは、明確に定義された単一のプロファイルに従って証明書を発行するように設計されています。たとえば、会社の内部ウェブサーバーに対してのみ証明書を発行する専用の CA プールがあります。これらの証明書にはすべて、同じ基本パラメータが必要です。
- 発行された証明書にはすべて、サブジェクトに
O=My organization
が含まれています。 - すべての DNS 名の末尾が
.cymbalgroup.com
です。 - 有効期間は 1 年間です。
証明書発行ポリシーはこれらのルールを適用し、この CA プールから発行されるすべての証明書がこのプロファイルに準拠するようにします。
- 発行された証明書にはすべて、サブジェクトに
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 Service は、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 は次のレベルでこれらのポリシー制御を評価します。
Identity and Access Management(IAM)権限: 最初に、サービスは、リクエスト元に証明書の作成または指定された証明書テンプレートの使用に必要な IAM 権限があるかどうかを確認します。これにより、承認されたユーザーのみが証明書を取得できます。
証明書発行ポリシー: サービスは、CA プールの発行ポリシーと照らし合わせて証明書リクエストを検証します。これにより、リクエストがその CA から発行された証明書の一般的な要件を満たしていることが保証されます。
証明書テンプレート: テンプレートを使用する場合、リクエストはテンプレートの特定の制約に対してさらに検証されます。これにより、証明書が目的の用途に適していることが保証されます。
CA プールの証明書発行ポリシーと証明書テンプレートの X.509 拡張機能が証明書に追加され、同じポリシーに基づいて特定の値が破棄されます。証明書に署名する前に、CA 証明書の名前の制約が証明書と照合され、サブジェクトが準拠していることが確認されます。
ポリシーの競合
異なるポリシー制御メカニズムを併用すると、異なるレベルのポリシーが競合する可能性があります。たとえば、証明書テンプレートで、CA プールの発行ポリシーで禁止されている鍵タイプ(ECDSA
など)が許可されている場合があります。または、証明書テンプレートと発行ポリシーで、同じ X.509 拡張機能に異なる値が指定されている場合もあります。
CA Service でポリシーの競合を管理する方法については、ポリシーの競合についてをご覧ください。
次のステップ
- ポリシー制御を実装する方法を確認する。
- Common Expression Language(CEL)の使用について学習する。