Anleitung: Richtliniensteuerungen verwalten
In dieser Anleitung erfahren Sie, wie Sie Richtliniensteuerungen für Ressourcen des Certificate Authority Service implementieren.
Lernziele
In dieser Anleitung erfahren Sie, wie Sie einen Pool einer gemeinsam genutzten Zertifizierungsstelle für die Ausgabe von DNS-Zertifikaten mit den folgenden Richtliniensteuerelementen konfigurieren:
- Der Nutzer
prod-dns-requester
kann TLS-Zertifikate für den Server der Endentität für die Domain*.prod.example.com
anfordern. - Nutzer
test-dns-requester
kann TLS-Zertifikate für Endentitätsserver für die Domain*.test.example.com
anfordern. - Der Nutzer
blank-check-requester
kann vom CA-Pool jede Art von Zertifikat anfordern.
In dieser Anleitung werden die Richtlinie für die Zertifikatausstellung eines CA-Pools, Zertifikatsvorlagen und bedingte IAM-Bindungen verwendet, um dieses Szenario zu erreichen.
Hinweise
- Weitere Informationen zu den verschiedenen Richtlinieneinstellungen von CA Service
- Zertifikatvorlagen erstellen
- Zertifikatprofile, die Sie für verschiedene Szenarien der Zertifikatsausstellung verwenden können
- Lesen Sie, wie Sie mit der Common Expression Language (CEL) verschiedene Richtlinienkontrollen für die Zertifikatausstellung erzwingen können.
- Richtlinie zur Zertifikatsausstellung verwenden
- IAM-Richtlinien zum Erstellen und Verwalten von CA Service-Ressourcen konfigurieren, ändern und entfernen
CA-Pool erstellen
Folgen Sie der Anleitung unten, um einen CA-Pool zu erstellen:
Verwenden Sie den folgenden
gcloud
-Befehl, um einen Zertifizierungsstellenpool zu erstellen, der die Dateiissuance-policy.yaml
verwendet:gcloud
gcloud privateca pools create POOL_NAME \ --tier=ENTERPRISE
Wobei:
- Das Flag
--tier
wird verwendet, um die Stufe des Zertifizierungsstellenpools anzugeben. Weitere Informationen zu Stufen finden Sie unter Stufen für Vorgänge auswählen.
- Das Flag
Verwenden Sie den folgenden
gcloud
-Befehl, um eine Zertifizierungsstelle mit von Google verwalteten Ressourcen im neu erstellten CA-Pool zu erstellen:gcloud
gcloud privateca roots create CA_NAME \ --pool=POOL_NAME \ --subject="CN=Example DNS Root, O=Example LLC, C=US" \ --validity="10Y" \ --max-chain-length=1 \ --auto-enable
Wobei:
- POOL_NAME ist die eindeutige Kennzeichnung des Zertifizierungsstellenpools.
- Mit dem Flag
--subject
wird der Name des Zertifikatsinhabers übergeben. - Das Flag
--validity
bestimmt die Gültigkeitsdauer der Zertifizierungsstelle. Die standardmäßige Gültigkeitsdauer beträgt 10 Jahre. - Das Flag
--max-chain-length
gibt die maximale Tiefe der untergeordneten Zertifizierungsstellen an, die unter einer Zertifizierungsstelle zulässig sind. - Mit dem Flag
--auto-enable
wird die Zertifizierungsstelle im StatusENABLED
und nicht im StatusSTAGED
erstellt. Weitere Informationen finden Sie unter CA-Bundesstaaten.
Richtliniensteuerung für Testzertifikate konfigurieren
Die Änderungen an der Ausstellungsrichtlinie treten sofort in Kraft. Wir empfehlen, die Einstellungen für Testrichtlinien zu konfigurieren, bevor Sie sie für die Produktion verwenden. In diesem Abschnitt wird beschrieben, wie Sie Testrichtlinieneinstellungen konfigurieren können.
Sowohl für die Test- als auch für die Produktions-DNS-Vorlage müssen Sie dieselben vordefinierten Werte für Server-TLS-Zertifikate verwenden. Erstellen Sie eine YAML-Datei leaf_server_tls_predefined_values.yaml
und kopieren Sie die folgende TLS-Konfiguration für Endentitätsserver in die Datei.
keyUsage:
baseKeyUsage:
digitalSignature: true
keyEncipherment: true
extendedKeyUsage:
serverAuth: true
caOptions:
isCa: false
Richtlinieneinstellungen für DNS-Testzertifikate konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie Richtliniensteuerelemente festlegen können, um dem Nutzer test-dns-requester
zu erlauben, TLS-Zertifikate des Endentitätsservers für DNS in der Domain *.test.example.com
anzufordern.
DNS-Zertifikatsvorlage für Testzertifikate erstellen
In diesem Abschnitt wird beschrieben, wie Sie eine Zertifikatvorlage erstellen, die die TLS-Konfiguration für Endentitätsserver enthält. Diese Zertifikatsvorlage beschränkt Zertifikate darauf, nur DNS-SANs in der Domain *.test.example.com
zu verwenden. Diese Einschränkungen werden mithilfe eines CEL-Ausdrucks (Common Expression Language) implementiert. Die Zertifikatsvorlage löscht außerdem alle in der Zertifikatsanfrage angegebenen Betreffs.
Verwenden Sie den folgenden
gcloud
-Befehl, um die Zertifikatvorlage zu erstellen, die die TLS-Erweiterungen des Endentitätsservers enthält, alle in der Zertifikatanfrage angegebenensubject
entfernt und zulässige SANs einschränkt.gcloud
gcloud privateca templates create test-server-tls-template \ --predefined-values-file ./leaf_server_tls_predefined_values.yaml \ --no-copy-subject \ --copy-sans \ --identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"
Wobei:
- Mit dem Flag
--predefined-values-file
wird eine YAML-Datei übergeben, die alle vordefinierten X.509-Werte beschreibt, die in der Zertifikatsvorlage festgelegt sind. - Mit dem Flag
--no-copy-subject
werden alle vom Anrufer angegebenen Antragsteller aus der Zertifikatsanfrage entfernt. - Das Flag
--copy sans
sorgt dafür, dass die SAN-Erweiterung aus der Zertifikatsanfrage in das signierte Zertifikat kopiert wird. - Das Flag
--identity-cel-expression
wird verwendet, um einen CEL-Ausdruck zu übergeben, der anhand der Identität im Zertifikat ausgewertet wird, bevor dieses ausgestellt wird. Weitere Informationen zur Verwendung von CEL-Ausdrücken zum Implementieren verschiedener Richtliniensteuerungen finden Sie unter CEL verwenden.
Weitere Informationen zum Erstellen von Zertifikatsvorlagen finden Sie unter Zertifikatsvorlage erstellen.
- Mit dem Flag
IAM-Bindungen für DNS-Testzertifikate erstellen
Wenn Sie dem Nutzer test-dns-requester@
im DNS-CA-Pool erlauben möchten, TLS-Zertifikate für Testserver anzufordern, erstellen Sie eine bedingte IAM-Bindung für den CA-Pool. Gewähren Sie dem Nutzer test-dns-requester@
die Rolle privateca.certificateRequester
nur, wenn die Zertifikatsanfrage einen Verweis auf die Vorlage test-server-tls-template
enthält. Weitere Informationen zu IAM-Rollen und Berechtigungen für CA Service finden Sie unter Zugriffssteuerung mit IAM.
Erstellen Sie eine YAML-Richtliniendatei
test_dns_condition.yaml
und kopieren Sie die folgende TLS-Konfiguration in die Datei.title: test DNS binding description: allows user to only create DNS test certificates expression: api.getAttribute("privateca.googleapis.com/template", "") == "PROJECT_ID/-/test-server-tls-template"
Der in der IAM-Bedingung angegebene Vorlagenname muss mit dem Vorlagennamen in der Zertifikatsanfrage übereinstimmen. Wenn Sie also eine Projekt-ID in der
privateca.googleapis.com/template
des CEL-Ausdrucks angeben, müssen Sie beim Anfordern des Zertifikats auch eine Projekt-ID an. Wenn Sie im CEL-Ausdruck eine Projektnummer angeben, müssen Sie auch in der Zertifikatsanfrage eine Projektnummer angeben.Verwenden Sie den folgenden
gcloud
-Befehl, um Richtlinieneinstellungen hinzuzufügen, die estest-dns-requester@
erlauben, nur Produktionstest-TLS-Zertifikate aus dem CA-Pool anzufordern.gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \ --role='roles/privateca.certificateRequester' \ --member='user:test-dns-requester@' \ --condition-from-file=./test_dns_condition.yaml
Wobei:
- Mit dem Flag
--role
wird der Rollenname übergeben, der einem Mitglied zugewiesen werden soll. Weitere Informationen zu IAM-Rollen und -Berechtigungen für den CA-Dienst finden Sie unter Zugriffssteuerung mit IAM. - Mit dem Flag
--member
wird das Mitglied übergeben, für das die Bindung hinzugefügt werden soll. - Das Flag
condition-from-file
wird verwendet, um den Namen der Datei mit der CEL-Bedingung zu übergeben.
- Mit dem Flag
Verwenden Sie den folgenden
gcloud
, um Richtliniensteuerungen hinzuzufügen, die estest-dns-requester@
ermöglichen, die Zertifikatvorlage „test-server-tls-template“ zu verwenden.gcloud
gcloud privateca templates add-iam-policy-binding test-server-tls-template \ --role='roles/privateca.templateUser' \ --member='user:test-dns-requester@'
Wobei:
- Mit dem Flag
--role
wird der Rollenname übergeben, der einem Mitglied zugewiesen werden soll. Weitere Informationen zu IAM-Rollen und Berechtigungen für CA Service finden Sie unter Zugriffssteuerung mit IAM. - Mit dem Flag
--member
wird das Mitglied übergeben, für das die Bindung hinzugefügt werden soll.
Weitere Informationen zum Konfigurieren von IAM-Richtlinien finden Sie unter IAM-Richtlinien konfigurieren.
- Mit dem Flag
Richtliniensteuerung für Produktionszertifikate konfigurieren
Nachdem Sie die Richtliniensteuerungen getestet haben, können Sie sie in Ihrer Produktionsumgebung verwenden.
Richtliniensteuerung für Produktions-DNS-Zertifikate konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie Richtliniensteuerungen festlegen, damit der Nutzer prod-dns-requester
TLS-Zertifikate für Endentitäten für die DNS-Domain .prod.example.com
anfordern kann.
Zertifikatsvorlage für Produktions-DNS-Zertifikate erstellen
Folgen Sie der nachstehenden Anleitung, um eine Zertifikatsvorlage zu erstellen, die die TLS-Konfiguration des Endentitätsservers enthält. Diese Zertifikatsvorlage beschränkt Zertifikate darauf, nur DNS-SANs in der Domain *.prod.example.com
zu verwenden. Diese Einschränkungen werden mithilfe eines CEL-Ausdrucks (Common Expression Language) implementiert. Die Zertifikatsvorlage löscht auch alle in der Zertifikatsanfrage angegebenen Antragsteller.
Erstellen Sie mit dem folgenden gcloud
-Befehl eine Zertifikatsvorlage prod-server-tls-template
.
gcloud
gcloud privateca templates create prod-server-tls-template \
--predefined-values-file ./leaf_server_tls_predefined_values.yaml \
--no-copy-subject \
--copy-sans \
--identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.prod.example.com'))"
Wobei:
- Mit dem Flag
--predefined-values-file
wird eine YAML-Datei übergeben, die alle vordefinierten X.509-Werte beschreibt, die in der Zertifikatsvorlage festgelegt sind. - Mit dem Flag
--no-copy-subject
werden alle vom Anrufer angegebenen Antragsteller aus der Zertifikatsanfrage entfernt. - Das Flag
--copy sans
sorgt dafür, dass die SAN-Erweiterung aus der Zertifikatsanfrage in das signierte Zertifikat kopiert wird. - Mit dem Flag
--identity-cel-expression
wird ein CEL-Ausdruck übergeben, der vor der Ausstellung mit der Identität im Zertifikat verglichen wird. Weitere Informationen zu CEL-Ausdrücken finden Sie unter CEL-Ausdrücke verwenden.
Weitere Informationen zum Erstellen von Zertifikatsvorlagen finden Sie unter Zertifikatsvorlage erstellen.
Weitere Informationen zum Befehl gcloud privateca templates create
finden Sie unter gcloud privateca template create.
IAM-Bindung für Produktions-DNS erstellen
Damit der Nutzer prod-dns-requester@
im DNS-CA-Pool TLS-Zertifikate für Produktionsserver anfordern kann, erstellen Sie eine bedingte IAM-Bindung für den CA-Pool. Weisen Sie dem Nutzer prod-dns-requester@
nur dann die Rolle privateca.certificateRequester
zu, wenn die Zertifikatsanfrage einen Verweis auf die Vorlage prod-server-tls-template
enthält. Weitere Informationen zu IAM-Rollen und ‑Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
Erstellen Sie eine YAML-Richtliniendatei
prod_dns_condition.yaml
und kopieren Sie die folgende TLS-Konfiguration in die Datei.title: Production DNS binding description: allows user to only create DNS production certificates expression: api.getAttribute("privateca.googleapis.com/template", "") == "PROJECT_ID/-/prod-server-tls-template"
Verwenden Sie den folgenden
gcloud
-Befehl, um Richtlinieneinstellungen hinzuzufügen, die esprod-dns-requester@
erlauben, nur TLS-Zertifikate des Produktionsservers aus dem CA-Pool anzufordern.gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \ --role='roles/privateca.certificateRequester' \ --member='user:prod-dns-requester@' \ --condition-from-file=./prod_dns_condition.yaml
Wobei:
- Mit dem Flag
--role
wird der Rollenname übergeben, der einem Mitglied zugewiesen werden soll. Weitere Informationen zu IAM-Rollen und -Berechtigungen für den CA-Dienst finden Sie unter Zugriffssteuerung mit IAM. - Das Flag
--member
wird verwendet, um das Mitglied zu übergeben, für das die Bindung hinzugefügt werden soll. - Das Flag
condition-from-file
wird verwendet, um den Namen der Datei mit der CEL-Bedingung zu übergeben.
Weitere Informationen zum Befehl
gcloud privateca pools add-iam-policy-binding
finden Sie unter gcloud privateca pools add-iam-policy-binding.- Mit dem Flag
Wenn Sie Richtliniensteuerungen hinzufügen möchten, mit denen
prod-dns-requester@
die Zertifikatvorlage „prod-server-tls-template“ verwenden kann, verwenden Sie den folgendengcloud
-Befehl:gcloud
gcloud privateca templates add-iam-policy-binding prod-server-tls-template \ --role='roles/privateca.templateUser' \ --member='user:prod-dns-requester@'
Wobei:
- Mit dem Flag
--role
wird der Rollenname übergeben, der einem Mitglied zugewiesen werden soll. Weitere Informationen zu IAM-Rollen und Berechtigungen für CA Service finden Sie unter Zugriffssteuerung mit IAM. - Mit dem Flag
--member
wird das Mitglied übergeben, für das die Bindung hinzugefügt werden soll.
- Mit dem Flag
Steuerungen für uneingeschränkte Nutzerrichtlinien
Damit der Nutzer blank-check-requester@
ein beliebiges Zertifikat ohne Einschränkungen anfordern kann, erstellen Sie eine IAM-Bindung ohne Bedingungen und weisen Sie dem Nutzer die Rolle privateca.certificateRequester
zu.
gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:blank-check-requester@example.com'
Wobei:
- Der Wert des Flags
--role
bestimmt die Rolle, die dem Nutzer zugewiesen wird. Weitere Informationen zu IAM-Rollen und Berechtigungen für CA Service finden Sie unter Zugriffssteuerung mit IAM. - Der Wert des Flags
--member
bestimmt den Nutzer, dem die Rolle zugewiesen wird.
Richtlinienkontrollen testen
Nachdem Sie Ihre Richtlinien für die Zertifikatsausstellung und IAM implementiert haben, sollten Sie diese Richtlinien überprüfen und testen, um sicherzustellen, dass sie wie erwartet funktionieren.
Alle Richtlinienbindungen abrufen
Rufen Sie alle IAM-Richtlinien ab, die in Ihrem CA-Pool implementiert sind. Verwenden Sie den Befehl gcloud privateca pools get-iam-policy
, um alle IAM-Richtlinien für den Zertifizierungsstellenpool abzurufen:
gcloud
gcloud privateca pools get-iam-policy POOL_NAME
Wobei:
- POOL_NAME ist die eindeutige Kennung des CA-Pools.
Weitere Informationen zum Befehl gcloud privateca pools get-iam-policy
finden Sie unter gcloud privateca Pools get-iam-policy.
Zertifikate generieren
In diesem Abschnitt finden Sie Informationen zum Generieren von allgemeinen Zertifikaten sowie Test- und Produktions-DNS-Zertifikaten.
Test-DNS-Zertifikate generieren
Wenn Sie dem Nutzer test-dns-requester@
erlauben möchten, Test-DNS-Zertifikate vom CA-Pool anzufordern, verwenden Sie den folgenden gcloud
-Befehl:
gcloud
gcloud privateca certificates create test-dns-1 \
--project=PROJECT_ID \
--issuer-location=LOCATION \
--issuer-pool=POOL_NAME \
--dns-san=foo.bar.test.example.com \
--generate-key \
--key-output-file=KEY_FILE_NAME \
--cert-output-file=test_dns_cert.pem \
--template=projects/PROJECT_ID/locations/LOCATION/certificateTemplates/test-server-tls-template
Wobei:
- Mit dem Flag
--issuer-location
wird der Speicherort des Zertifikats festgelegt. Eine vollständige Liste der Standorte finden Sie unter Standorte. - Mit dem Flag
--issuer-pool
wird der CA-Pool festgelegt, von dem das Zertifikat angefordert wird. - Mit dem Flag
--dns-san
können Sie eine oder mehrere durch Kommas getrennte DNS-SANs festlegen. - Das Flag
--generate-key
löst die Generierung eines neuen privaten RSA-2048-Schlüssels auf Ihrem Computer aus. - Mit dem Flag
--key-output-file
wird der Pfad festgelegt, in dem der generierte private Schlüssel geschrieben wird (im PEM-Format). - Mit dem Flag
--cert-output-file
wird der Pfad festgelegt, unter dem die resultierende PEM-codierte Zertifikatskettendatei geschrieben wird (sortiert von Endentität zu Stamm). - Mit dem Flag
--template
wird der Name der Zertifikatsvorlage festgelegt, die Sie für die Ausstellung dieses Zertifikats verwenden möchten. Die angegebene Vorlage muss sich am selben Speicherort wie der ausstellende CA-Pool befinden. Weitere Informationen zu Zertifikatsvorlagen finden Sie unter Zertifikatvorlagen und Ausstellungsrichtlinien – Übersicht.
Produktionszertifikate generieren
Der Nutzer prod-dns-requester
kann jetzt DNS-Produktionszertifikate aus dem Zertifizierungsstellenpool anfordern. Mit dem --dns-san=foo.bar.prod.example.com
wird der Zertifikatsanfrage ein SAN vom Typ „DNS“ mit dem angegebenen Wert hinzugefügt.
gcloud
gcloud privateca certificates create prod-dns-1 \
--project=PROJECT_ID \
--issuer-location=LOCATION \
--issuer-pool=POOL_NAME \
--dns-san=foo.bar.prod.example.com \
--generate-key \
--key-output-file=KEY_FILE_NAME \
--cert-output-file=prod_dns_cert.pem \
--template=projects/PROJECT_ID/locations/LOCATION/certificateTemplates/prod-server-tls-template
Wobei:
- Mit dem Flag
--issuer-location
wird der Speicherort des Zertifikats festgelegt. Eine vollständige Liste der Standorte finden Sie unter Standorte. - Das Flag
--issuer-pool
legt den Zertifizierungsstellenpool fest, aus dem das Zertifikat angefordert wird. - Mit dem Flag
--dns-san
können Sie eine oder mehrere durch Kommas getrennte DNS-SANs festlegen. - Das Flag
--generate-key
löst die Generierung eines neuen privaten RSA-2048-Schlüssels auf Ihrem Computer aus. - Mit dem Flag
--key-output-file
wird der Pfad festgelegt, in dem der generierte private Schlüssel geschrieben wird (im PEM-Format). - Mit dem Flag
--cert-output-file
wird der Pfad festgelegt, unter dem die resultierende PEM-codierte Zertifikatskettendatei geschrieben wird (sortiert von Endentität zu Stamm). - Mit dem Flag
--template
wird der Name der Zertifikatsvorlage festgelegt, die für die Ausstellung dieses Zertifikats verwendet werden soll. Die angegebene Vorlage muss sich am selben Speicherort wie der ausstellende CA-Pool befinden. Weitere Informationen zu Zertifikatsvorlagen finden Sie unter Zertifikatvorlagen und Ausstellungsrichtlinien – Übersicht.
Allgemeine Zertifikate generieren
Der Nutzer blank-check-requester@
kann mit dem Befehl gcloud privateca certificates create
ein beliebiges Zertifikat aus dem Zertifizierungsstellenpool anfordern.
Wenn Sie ein Zertifikat von einem CA-Pool anfordern möchten, können Sie einen von CA Service erstellten öffentlichen/privaten Schlüssel verwenden. Weitere Informationen zum Anfordern von Zertifikaten finden Sie unter Zertifikat anfordern und ausgestelltes Zertifikat ansehen.
Bereinigen
In diesem Abschnitt wird beschrieben, wie Sie IAM-Richtlinien über einen CA-Pool entfernen.
Bestimmte IAM-Bindung entfernen
Verwenden Sie den folgenden gcloud
-Befehl, um die bedingten IAM-Bindungen über den Zertifizierungsstellenpool für den Nutzer blank-check-requester
zu entfernen:
gcloud
gcloud privateca pools remove-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:blank-check-requester@'
Wobei:
- Der Wert des
--role
-Flags bestimmt die Rolle, die dem Nutzer zugewiesen wird. Weitere Informationen zu IAM-Rollen und Berechtigungen für CA Service finden Sie unter Zugriffssteuerung mit IAM. - Der Wert des Flags
--member
bestimmt den Nutzer, dem die Rolle zugewiesen wird.
Wenn Sie eine bestimmte IAM-Bindung entfernen möchten, müssen Sie im Befehl gcloud privateca pools remove-iam-policy-binding
alle zugehörigen Informationen angeben. Eine Rolle und ein Mitglied können mehrere IAM-Bindungen mit unterschiedlichen Bedingungen haben. Es ist wichtig, dass Sie alle Details zur IAM-Bindung angeben, um zu vermeiden, dass eine andere Bindung versehentlich gelöscht wird.
Weitere Informationen zum Befehl gcloud privateca pools remove-iam-policy-binding
finden Sie unter gcloud privateca pools remove-iam-policy-binding.
Alle bedingten IAM-Bindungen entfernen
Mit dem Befehl gcloud privateca pools remove-iam-policy-binding
können Sie eine IAM-Bindung entfernen. Wenn Sie eine IAM-Bedingte Bindung entfernen, müssen Sie alle Informationen zur Bindung angeben. Ein Nutzer und eine Rolle können mehrere bedingte Bindungen haben. Verwenden Sie das Flag --all
im Befehl gcloud
, um alle bedingten Bindungen zu entfernen.
Verwenden Sie den folgenden gcloud
-Befehl, um alle Bindungen für den Nutzer prod-code-signing-requester
zu entfernen.
gcloud
gcloud privateca pools remove-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:prod-code-signing-requester@' \
--all
Wobei:
- Der Wert des Flags
--role
bestimmt die Rolle, die dem Nutzer zugewiesen wird. Weitere Informationen zu IAM-Rollen und -Berechtigungen für den CA-Dienst finden Sie unter Zugriffssteuerung mit IAM. - Der Wert des Flags
--member
bestimmt den Nutzer, dem die Rolle zugewiesen wird.