Anleitung: Richtliniensteuerungen verwalten

In dieser Anleitung erfahren Sie, wie Sie Richtliniensteuerungen für Ressourcen des Certificate Authority Service implementieren.

Lernziele

In diesem Leitfaden erfahren Sie, wie Sie einen freigegebenen CA-Pool (Zertifizierungsstelle) für die Ausstellung von DNS-Zertifikaten mit den folgenden Richtliniensteuerungen konfigurieren:

  • Nutzer prod-dns-requester kann TLS-Zertifikate für Endentitätsserver 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 beliebige Arten von Zertifikaten anfordern.

In dieser Anleitung werden die Richtlinie für die Ausstellung von Zertifikaten eines CA-Pools, Zertifikatsvorlagen und bedingte IAM-Bindungen verwendet, um dieses Szenario zu erreichen.

Hinweise

CA-Pool erstellen

Folgen Sie der Anleitung unten, um einen CA-Pool zu erstellen:

  1. Verwenden Sie den folgenden gcloud-Befehl, um einen CA-Pool zu erstellen, der die Datei issuance-policy.yaml verwendet:

    gcloud

    gcloud privateca pools create POOL_NAME --location=LOCATION --tier=ENTERPRISE
    

    Wobei:

    • LOCATION ist der Speicherort, an dem Sie den CA-Pool erstellen möchten. Eine vollständige Liste der Standorte finden Sie unter Standorte.
    • Mit dem Flag --tier wird die Stufe des Zertifizierungsstellenpools angegeben. Weitere Informationen zu Stufen finden Sie unter Stufen für Vorgänge auswählen.
  2. 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 \
        --location=LOCATION \
        --subject="CN=Example DNS Root, O=Example LLC, C=US" \
        --validity="10Y" \
        --max-chain-length=1 \
        --auto-enable
    

    Wobei:

    • POOL_NAME ist die eindeutige Kennung des CA-Pools.
    • LOCATION ist der Speicherort, an dem Sie den CA-Pool erstellen möchten. Eine vollständige Liste der Standorte finden Sie unter Standorte.
    • Mit dem Flag --subject wird der Name des Zertifikatsinhabers übergeben.
    • Das Flag --validity bestimmt die Gültigkeitsdauer der Zertifizierungsstelle. Die Standardgü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 CA im Status ENABLED statt im Status STAGED erstellt. Weitere Informationen zu CA-Status finden Sie unter CA-Status.

Richtliniensteuerungen für Testzertifikate konfigurieren

Die Änderungen an den Richtlinien für die Ausstellung 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 Steuerelemente für Testrichtlinien konfigurieren.

Sowohl für die Test- als auch für die Produktions-DNS-Vorlagen 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

Richtliniensteuerungen für Test-DNS-Zertifikate konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Richtliniensteuerungen festlegen, damit der Nutzer test-dns-requester Endentitätsserver-TLS-Zertifikate für DNS in der Domain *.test.example.com anfordern kann.

DNS-Zertifikatsvorlage für Testzertifikate erstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Zertifikatvorlage erstellen, die die TLS-Konfiguration des Endentitätsservers enthält. Mit dieser Zertifikatvorlage ist die Verwendung von DNS-SANs in der Domain *.test.example.com für Zertifikate beschränkt. Diese Einschränkungen werden mit einem CEL-Ausdruck (Common Expression Language) implementiert. Die Zertifikatsvorlage entfernt auch alle in der Zertifikatsanfrage angegebenen Antragsteller.

  1. Verwenden Sie den folgenden gcloud-Befehl, um die Zertifikatvorlage zu erstellen, die die TLS-Erweiterungen des Endentitätsservers enthält, alle in der Zertifikatanfrage angegebenen subject 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 wurden.
    • Das Flag --no-copy-subject entfernt alle vom Anrufer angegebenen Subjekte aus der Zertifikatsanfrage.
    • 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 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.

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 eine Referenz auf die Vorlage test-server-tls-template enthält. Weitere Informationen zu IAM-Rollen und -Berechtigungen für den CA-Dienst finden Sie unter Zugriffssteuerung mit IAM.

  1. 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 im privateca.googleapis.com/template-Attribut des CEL-Ausdrucks eine Projekt-ID angeben, müssen Sie auch beim Anfordern des Zertifikats eine Projekt-ID angeben. Wenn Sie im CEL-Ausdruck eine Projektnummer angeben, müssen Sie auch in der Zertifikatsanfrage eine Projektnummer angeben.

  2. Verwenden Sie den folgenden gcloud-Befehl, um Richtliniensteuerungen hinzuzufügen, mit denen test-dns-requester@ nur Produktionstest-TLS-Zertifikate vom CA-Pool anfordern kann.

    gcloud

    gcloud privateca pools add-iam-policy-binding POOL_NAME \
        --location=LOCATION \
        --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.
    • Mit dem Flag condition-from-file wird der Name der Datei mit der CEL-Bedingung übergeben.
  3. Verwenden Sie den folgenden gcloud, um Richtliniensteuerungen hinzuzufügen, die es test-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 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.

    Weitere Informationen zum Konfigurieren von IAM-Richtlinien finden Sie unter IAM-Richtlinien konfigurieren.

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 folgenden Anleitung, um eine Zertifikatvorlage mit der TLS-Konfiguration für Endentitätsserver zu erstellen. Mit dieser Zertifikatvorlage werden Zertifikate auf die Verwendung von DNS-SANs in der Domain *.prod.example.com beschränkt. Diese Einschränkungen werden mit einem Common Expression Language-Ausdruck (CEL) implementiert. Die Zertifikatsvorlage entfernt auch alle in der Zertifikatsanfrage angegebenen Antragsteller.

Erstellen Sie mit dem folgenden Befehl eine Zertifikatvorlage prod-server-tls-template.gcloud

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 von der Zertifikatsvorlage festgelegt wurden.
  • 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 templates create.

IAM-Bindung für Produktions-DNS erstellen

Wenn Sie dem Nutzer prod-dns-requester@ im DNS-CA-Pool erlauben möchten, TLS-Zertifikate für Produktionsserver anzufordern, 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.

  1. 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"
    
  2. Mit dem folgenden gcloud-Befehl können Sie Richtliniensteuerungen hinzufügen, die es prod-dns-requester@ ermöglichen, nur TLS-Zertifikate für Produktionsserver vom CA-Pool anzufordern.

    gcloud

    gcloud privateca pools add-iam-policy-binding POOL_NAME \
        --location=LOCATION \
        --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.
    • Mit dem Flag --member wird das Mitglied übergeben, für das die Bindung hinzugefügt werden soll.
    • Mit dem Flag condition-from-file wird der Name der Datei mit der CEL-Bedingung übergeben.

    Weitere Informationen zum Befehl gcloud privateca pools add-iam-policy-binding finden Sie unter gcloud privateca pools add-iam-policy-binding.

  3. Wenn Sie Richtliniensteuerungen hinzufügen möchten, die es prod-dns-requester@ ermöglichen, die Zertifikatvorlage „prod-server-tls-template“ zu verwenden, verwenden Sie den folgenden gcloud-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 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.

Steuerungen für uneingeschränkte Nutzerrichtlinien

Wenn der Nutzer blank-check-requester@ ohne Einschränkungen ein Zertifikat anfordern soll, erstellen Sie eine IAM-Bindung ohne Bedingungen, die dem Nutzer die Rolle privateca.certificateRequester zuweist.

gcloud

gcloud privateca pools add-iam-policy-binding POOL_NAME \
    --location=LOCATION \
    --role='roles/privateca.certificateRequester' \
    --member='user:blank-check-requester@example.com'

Wobei:

  • Der Wert des --role-Flags 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 ist.

Ersetzen Sie Folgendes:

  • POOL_NAME: die eindeutige Kennung des CA-Pools.
  • LOCATION: der Standort des CA-Pools. Eine vollständige Liste der Standorte finden Sie unter Standorte.

Richtlinienkontrollen testen

Nachdem Sie Ihre Richtlinien für die Zertifikatsausstellung und IAM implementiert haben, sollten Sie diese ü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 CA-Pool abzurufen:

gcloud

gcloud privateca pools get-iam-policy POOL_NAME --location=LOCATION

Ersetzen Sie Folgendes:

  • POOL_NAME: die eindeutige Kennung des CA-Pools.
  • LOCATION: der Standort des CA-Pools. Eine vollständige Liste der Standorte finden Sie unter Standorte.

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 aus dem 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 --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, unter dem der generierte private Schlüssel im PEM-Format geschrieben wird.
  • 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 Übersicht über Zertifikatsvorlagen und Ausstellungsrichtlinien.

Ersetzen Sie Folgendes:

  • PROJECT_ID: die eindeutige Kennung des Projekts.
  • LOCATION: der Standort des CA-Pools, von dem das Zertifikat angefordert wird. Eine vollständige Liste der Standorte finden Sie unter Standorte.
  • POOL_NAME: die eindeutige Kennung des CA-Pools.

Produktionszertifikate generieren

Der Nutzer prod-dns-requester kann jetzt Produktions-DNS-Zertifikate vom CA-Pool anfordern. Mit --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.
  • 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, unter dem der generierte private Schlüssel im PEM-Format geschrieben wird.
  • 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 Übersicht über Zertifikatsvorlagen und Richtlinien zur Ausstellung.

Allgemeine Zertifikate generieren

Der Nutzer blank-check-requester@ kann mit dem Befehl gcloud privateca certificates create ein beliebiges Zertifikat aus dem CA-Pool anfordern.

Wenn Sie ein Zertifikat von einem CA-Pool anfordern möchten, können Sie einen öffentlichen/privaten Schlüssel verwenden, der von CA Service erstellt wurde. Weitere Informationen zum Anfordern von Zertifikaten finden Sie unter Zertifikat anfordern und ausgestelltes Zertifikat ansehen.

Bereinigen

In diesem Abschnitt wird erläutert, wie Sie IAM-Richtlinien über einen Zertifizierungsstellenpool entfernen.

Bestimmte IAM-Bindung entfernen

Verwenden Sie den folgenden gcloud-Befehl, um die IAM-Bedingten Bindungen über den CA-Pool für den Nutzer blank-check-requester zu entfernen:

gcloud

gcloud privateca pools remove-iam-policy-binding POOL_NAME \
    --location=LOCATION \
    --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 den CA-Dienst 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. Geben Sie alle Details zur IAM-Bindung an, damit nicht versehentlich eine andere Bindung 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 IAM-Bedingten 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. Wenn Sie alle bedingten Bindungen entfernen möchten, verwenden Sie das Flag --all im Befehl gcloud.

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 \
    --location=LOCATION \
    --role='roles/privateca.certificateRequester' \
    --member='user:prod-code-signing-requester@' \
    --all

Wobei:

  • Der Wert des --role-Flags 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.