Bewährte Methoden für Sicherheit in Amazon S3 - Amazon EKS

Bewährte Methoden für Sicherheit in Amazon S3

Dieses Thema enthält bewährte Sicherheitsmethoden für Ihren Cluster.

Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils

Standardmäßig ist die Amazon EC2Instance-Metadaten-Service(IMDS) stellt die Anmeldeinformationen bereit, die derIAM-RolleAuf die Instance und jeden Container, der auf der Instance ausgeführt wird. Wenn SieIAM-Rollen für Servicekontenwird die Anmeldeinformationskette des Pods aktualisiert, um die IAM-Rollen für Dienstkonten Token zu verwenden. Der Pod kann jedoch weiterhin die Rechte des dem Knoten zugewiesenen Instance-Profils erben. Wir empfehlen Ihnen, den Pod-Zugriff auf IMDS zu blockieren, um die für Ihre Container verfügbaren Berechtigungen zu minimieren, wenn:

  • Sie haben IAM-Rollen für Dienstkonten implementiert und die erforderlichen Berechtigungen direkt allen Pods zugewiesen, die Zugriff aufAWS-Services.

  • Keine Pods in Ihrem Cluster benötigen aus anderen Gründen Zugriff auf IMDS, z. B. zum Abrufen der aktuellen Region.

Weitere Informationen finden Sie unter Abrufen von Sicherheitsanmeldeinformationen aus Instance-Metadaten. Sie können den Zugriff auf IMDS von Ihrer Instanz und Ihren Containern mit einer der folgenden Optionen verhindern.

Wichtig

Wenn Sie den AWS Load Balancer Controller in Ihrem Cluster verwenden, müssen Sie möglicherweise Ihre Load Balancer-Konfiguration ändern. Weitere Informationen finden Sie unter So stellen Sie den AWS-Lastenverteilungs-Controller in einem Amazon-EKS-Cluster bereit.

  • Blockieren Sie den Zugriff auf IMDSv1 vom Knoten und allen Containern und blockieren Sie den Zugriff auf IMDSv2 für alle Container, die kein Hostnetzwerk verwenden— Ihre Instanz und Pods, diehostNetwork: truein ihrer Pod-Spezifikation verwenden Host-Netzwerk. Um diese Option zu implementieren, führen Sie die Schritte in der Zeile und Spalte aus, die für Ihre Situation gelten.

    Bereitstellungsmethode Neue Knotengruppe Vorhandene Knotengruppe
    Verwaltete Knoten ohne benutzerdefinierte Startvorlage Nicht möglich mit einer anderen Bereitstellungsmethode als eksctl. Wenn die Bereitstellung mit eksctl, verwenden Sie die --disable-pod-imds Option mit eksctl create nodegroup aus.eksctl kann verwendet werden, da eine Startvorlage basierend auf den von Ihnen angegebenen Optionen erstellt und die Knotengruppe mithilfe dieser Startvorlage bereitgestellt wird. Es wird empfohlen, eine neue Knotengruppe mit einer benutzerdefinierten Startvorlage zu erstellen, die die Einstellungen in der New node group-Spalte der nächsten Zeile dieser Tabelle.
    Verwaltete Knoten mit einer benutzerdefinierten Startvorlage Legen Sie die folgenden Einstellungen in der -Startvorlage Fortgeschrittene Details:
    • Zugängliche MetadatenEnabled

    • Metadaten-VersionV2 only (token required)

    • Metadaten-Antwort-Hop-Limits1

    Aktualisieren Sie Ihre Startvorlage mit den Einstellungen in der Neu-Spalte und dann Ihre Knotengruppe aktualisieren mit der neuen Launch-Vorlagenversion.
    Selbstverwaltet
    • Wenn Sie die Knotengruppe mithilfe der AWS Management Console

      1. Laden Sie die Vorlage für die selbstverwaltete Knotengruppe AWS CloudFormation für Ihre Region und Ihr Betriebssystem herunter.

        • Linux – Alle Regionen außer China (Beijing) und China (Ningxia)

          https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-nodegroup.yaml
        • Linux – China (Peking) und China (Ningxia)

          https://amazon-eks.s3.cn-north-1.amazonaws.com.cncloudformation/2020-10-29/amazon-eks-nodegroup.yaml
        • Windows – Alle Regionen außer China (Beijing) und China (Ningxia)

          https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
        • Windows – China (Peking) und China (Ningxia)

          https://amazon-eks.s3.cn-north-1.amazonaws.com.cncloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
      2. Bearbeiten Sie die Datei. Ändern Sie die Zeile mit HttpPutResponseHopLimit : 2 in HttpPutResponseHopLimit : 1 und speichern Sie die Datei.

      3. Selbstverwaltet – Stellen Sie die Knotengruppe mithilfe der Anweisungen in Starten selbstverwalteter Amazon Linux-Knoten oder Selbstverwaltete Windows-Knoten starten bereit. Für die Anweisungen zum Angeben einer AWS CloudFormation-Vorlage wählen Sie statt Amazon-S3-URL eine Vorlagendatei hochladen, dann Datei auswählen, wählen Sie Ihre bearbeitete Datei aus und fahren Sie dann mit den Anweisungen fort. Setzen Sie den Wert von DisableIMDSv1 ebenfalls auf true.

    • Bei der Erstellung der Knotengruppeeksctl, verwenden Sie die--disable-pod-imdsOption miteksctl create nodegroupaus.

    • Beim Aktualisieren oder Migrieren der Knotengruppe mit demAWS Management Console

      1. Laden Sie die Vorlage für die selbstverwaltete Knotengruppe AWS CloudFormation für Ihre Region und Ihr Betriebssystem herunter.

        • Linux – Alle Regionen außer China (Beijing) und China (Ningxia)

          https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-nodegroup.yaml
        • Linux – China (Peking) und China (Ningxia)

          https://amazon-eks.s3.cn-north-1.amazonaws.com.cncloudformation/2020-10-29/amazon-eks-nodegroup.yaml
        • Windows – Alle Regionen außer China (Beijing) und China (Ningxia)

          https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
        • Windows – China (Peking) und China (Ningxia)

          https://amazon-eks.s3.cn-north-1.amazonaws.com.cncloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
      2. Bearbeiten Sie die Datei. Ändern Sie die Zeile mit HttpPutResponseHopLimit : 2 in HttpPutResponseHopLimit : 1 und speichern Sie die Datei.

      3. Selbstverwaltet – Erstellen Sie die Knotengruppe mithilfe der Anweisungen in Aktualisieren einer vorhandenen selbstverwalteten Knotengruppe. Für die Anweisungen zum Angeben einer AWS CloudFormation-Vorlage wählen Sie statt Amazon-S3-URL eine Vorlagendatei hochladen, dann Datei auswählen, wählen Sie Ihre bearbeitete Datei aus und fahren Sie dann mit den Anweisungen fort. Setzen Sie den Wert von DisableIMDSv1 ebenfalls auf true.

      Wichtig

      Jedes Mal, wenn Sie die Knotengruppe aus irgendeinem Grund aktualisieren, z. B. eine neue AMI- oder Kubernetes-Version, müssen Sie die vorherigen Einstellungen in der Vorlage erneut ändern.

    • Bei der Migration der Knotengruppeeksctl. Wenn Sie die neue Knotengruppe erstellen, verwenden Sie die--disable-pod-imdsOption miteksctl create nodegroupaus.

      Wichtig

      Stellen Sie bei jeder Aktualisierung der Knotengruppe aus irgendeinem Grund sicher, dass Sie diese Option beim Erstellen Ihrer neuen Knotengruppe verwenden, z. B. eine neue AMI- oder Kubernetes-Version.

  • Blockieren des Zugriffs auf IMDSv1 und IMDSv2 für alle Container, die kein Host-Netzwerk verwenden— Ihre Instanz und Pods, diehostNetwork: truein ihrer Pod-Spezifikation Host-Netzwerk verwenden, aber aus Legacy-Gründen weiterhin Zugriff auf IMDSv1 benötigen. Führen Sie Folgendes aus:iptables-Befehle auf jedem Ihrer Amazon Linux-Knoten (als root) oder fügen Sie sie in Ihr Instanz-Bootstrap-Benutzerdatenskript ein.

    yum install -y iptables-services iptables --insert FORWARD 1 --in-interface eni+ --destination 169.254.169.254/32 --jump DROP iptables-save | tee /etc/sysconfig/iptables systemctl enable --now iptables
    Wichtig
    • Die vorherige Regel gilt nur für Netzwerkschnittstellen innerhalb des Knotens, die einen Namen haben, der miteni, das sind alle Netzwerkschnittstellen, die das CNI-Plugin für Pods erstellt, die kein Host-Netzwerk verwenden. Der Datenverkehr zum IMDS wird weder für den Knoten noch für Pods, die Hostnetzwerke verwenden, wie kube-proxy und das CNI-Plugin.

    • Wenn Sie Netzwerkrichtlinien implementieren, verwenden Sie ein Tool wieCalico, kann die vorherige Regel überschrieben werden. Stellen Sie beim Implementieren der Netzwerkrichtlinie sicher, dass diese Regel nicht überschrieben wird oder dass Ihre Richtlinie diese Regel enthält.

    • Wenn Sie Sicherheitsgruppen auf Pods angewendet haben und daher über Zweigstellennetzwerkschnittstellen verfügen, führen Sie zusätzlich zum vorherigen Befehl auch den folgenden Befehl aus.

      iptables -t mangle -A POSTROUTING -o vlan+ --destination 169.254.169.254/32 --jump DROP

      Weitere Informationen zu Zweigstellennetzwerkschnittstellen finden Sie unter Sicherheitsgruppen für Pods.