Sichere Workloads mit Kubernetes-Zertifikaten - Amazon EKS

Hilf mit, diese Seite zu verbessern

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sichere Workloads mit Kubernetes-Zertifikaten

Die Kubernetes-Zertifikats-API automatisiert die Bereitstellung von X.509-Anmeldeinformationen. Die API bietet eine Befehlszeilenschnittstelle für Kubernetes-API-Clients, um X.509-Zertifikate von einer Zertifizierungsstelle (CA) anzufordern und zu erhalten. Sie können die CertificateSigningRequest (CSR)-Ressource verwenden, um anzufordern, dass ein benannter Unterzeichner das Zertifikat signiert. Ihre Anfragen werden entweder genehmigt oder abgelehnt, bevor sie signiert werden. Kubernetes unterstützt sowohl integrierte Unterzeichner als auch benutzerdefinierte Unterzeichner mit klar definiertem Verhalten. Auf diese Weise können Kunden vorhersagen, was mit ihren passiert. CSRs Weitere Informationen zur Zertifikatsignatur finden Sie unter Signieren von Anforderungen.

Einer der integrierten Unterzeichner ist kubernetes.io/legacy-unknown. Die v1beta1-API der CSR-Ressource berücksichtigte diesen Unterzeichnertyp „legacy-unknown“. Die stabile v1 API von CSR erlaubt es jedoch nicht, auf eingestellt signerName zu kubernetes.io/legacy-unknown werden.

Wenn Sie Amazon EKS CA zum Generieren von Zertifikaten verwenden möchten, müssen Sie einen benutzerdefinierten Unterzeichner verwenden. Um die CSR-v1-API-Version zu verwenden und ein neues Zertifikat zu generieren, müssen Sie alle vorhandenen Manifeste und API-Clients migrieren. Bestehende Zertifikate, die mit der vorhandenen v1beta1-API erstellt wurden, sind gültig und funktionieren, bis sie ablaufen. Diese umfasst die folgenden Funktionen:

  • Vertrauensverteilung: keine. In einem Kubernetes-Cluster gibt es keine Standardvertrauensstellung oder -verteilung für diesen Unterzeichner.

  • Zulässige Themen: beliebig

  • Zulässige x509-Erweiterungen: Zeichnet Nutzungserweiterungen zu subjectAltName und verwirft andere Erweiterungen

  • Zulässige Schlüsselnutzung: Darf keine anderen Nutzungen als [„Schlüsselverschlüsselung“, „digitale Signatur“, „Serverauth“] enthalten

    Anmerkung

    Das Signieren von Clientzertifikaten wird nicht unterstützt.

  • Ablauf/Zertifikatslebensdauer: 1 Jahr (Standard und Maximum)

  • CA-Bit zulässig/unzulässig: unzulässig

Beispiel CSR-Erstellung mit signerName

Diese Schritte veranschaulichen, wie Sie ein Bereitstellungszertifikat für DNS-Namen myserver.default.svc mit signerName: beta.eks.amazonaws.com/app-serving erstellen. Verwenden Sie dies als Leitfaden für Ihre eigene Umgebung.

  1. Führen Sie den Befehl openssl genrsa -out myserver.key 2048 aus, um einen privaten RSA-Schlüssel zu erzeugen.

    openssl genrsa -out myserver.key 2048
  2. Führen Sie den folgenden Befehl aus, um eine Zertifikatsanforderung zu erstellen.

    openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
  3. Generieren Sie einen base64-Wert für die CSR-Variablen für die Verwendung in einem späteren Schritt.

    base_64=$(cat myserver.csr | base64 -w 0 | tr -d " ")
  4. Führen Sie den folgenden Befehl aus, um eine Datei mit dem Namen mycsr.yaml zu erstellen. Im folgenden Beispiel ist beta.eks.amazonaws.com/app-serving der signerName.

    cat >mycsr.yaml <<EOF apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: myserver spec: request: $base_64 signerName: beta.eks.amazonaws.com/app-serving usages: - digital signature - key encipherment - server auth EOF
  5. Reichen Sie die CSR ein.

    kubectl apply -f mycsr.yaml
  6. Genehmigen Sie das Bereitstellungszertifikat.

    kubectl certificate approve myserver
  7. Stellen Sie sicher, dass das Zertifikat ausgestellt wurde.

    kubectl get csr myserver

    Eine Beispielausgabe sieht wie folgt aus.

    NAME AGE SIGNERNAME REQUESTOR CONDITION myserver 3m20s beta.eks.amazonaws.com/app-serving kubernetes-admin Approved,Issued
  8. Exportieren Sie das ausgestellte Zertifikat.

    kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt