Sicheres Speichern von privaten Schlüsseln in Amazon S3 - AWS Elastic Beanstalk

Sicheres Speichern von privaten Schlüsseln in Amazon S3

Der private Schlüssel, den Sie zum Signieren des öffentlichen Zertifikats verwenden, ist geheim und sollte nicht an den Quellcode übergeben werden. Sie können vermeiden, dass private Schlüssel in Konfigurationsdateien gespeichert werden, indem Sie sie in Amazon S3 hochladen und Elastic Beanstalk so konfigurieren, dass die Datei während der Anwendungsbereitstellung aus Amazon S3 heruntergeladen wird.

Das folgende Beispiel veranschaulicht, wie Sie in den Abschnitten Resources und files einer Konfigurationsdatei eine Datei mit einem privaten Schlüssel aus einem Amazon S3-Bucket herunterladen.

Beispiel .ebextensions/privatekey.config

Resources: AWSEBAutoScalingGroup: Metadata: AWS::CloudFormation::Authentication: S3Auth: type: "s3" buckets: ["elasticbeanstalk-us-west-2-123456789012"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "IamInstanceProfile" DefaultValue: "aws-elasticbeanstalk-ec2-role" files: # Private key "/etc/pki/tls/certs/server.key": mode: "000400" owner: root group: root authentication: "S3Auth" source: https://elasticbeanstalk-us-west-2-123456789012.s3.us-west-2.amazonaws.com/server.key

Ersetzen Sie den Bucket-Namen und die URL im Beispiel durch Ihre eigenen Angaben. Mit dem ersten Eintrag der Datei wird eine Authentifizierungsmethode mit dem Namen S3Auth zu den Metadaten der Auto Scaling-Gruppe für diese Umgebung hinzugefügt. Falls Sie ein benutzerdefiniertes Instance-Profil für die Umgebung konfiguriert haben, wird dieses verwendet. Andernfalls wird der Standardwert von aws-elasticbeanstalk-ec2-role übernommen. Das Instance-Standardprofil besitzt die Berechtigung zum Lesen der Speicher-Buckets von Elastic Beanstalk. Bei Verwendung eines anderen Buckets fügen Sie Berechtigungen zum Instance-Profil hinzu.

Vom zweiten Eintrag wird die Authentifizierungsmethode S3Auth verwendet, um den privaten Schlüssel über die angegebene URL herunterzuladen und unter /etc/pki/tls/certs/server.key zu speichern. Der Proxy-Server kann dann den privaten Schlüssel an diesem Speicherort auslesen und HTTPS-Verbindungen zur Instance beenden.

Das Instance-Profil, das Sie den EC2-Instances der Umgebung zugeordnet haben, muss über die Berechtigung zum Lesen des Schlüsselobjekts aus dem angegebenen Bucket verfügen. Stellen Sie sicher, dass das Instance-Profil über die Berechtigung zum Lesen des Objekts in IAM verfügt und dass die Berechtigungen für den Bucket und das Objekt das Instance-Profil nicht ausschließen.

So zeigen Sie die Berechtigungen eines Buckets an

  1. Öffnen Sie die Amazon S3-Managementkonsole.

  2. Wählen Sie einen Bucket aus.

  3. Wählen Sie Properties (Eigenschaften) und dann Permissions (Berechtigungen) aus.

  4. Vergewissern Sie sich, dass Ihr Konto für diesen Bucket berechtigt ist und Leseberechtigung hat.

  5. Wenn eine Bucket-Richtlinie angefügt ist, wählen Sie Bucket policy (Bucket-Richtlinie) aus, um die dem Bucket zugewiesenen Berechtigungen anzuzeigen.