Suchen
Schließen Sie dieses Suchfeld.

Verwendung von Lambda-Funktionen mit Qumulo (Teil 2)

Geschrieben von:
Anleitung zu einer Lambda-Funktion zum Rotieren des Administratorkennworts eines Clusters und Erstellen eines Geheimnisses in AWS Secrets Manager zum Speichern der Anmeldeinformationen des Clusters.

Dies ist der letzte Eintrag in einer 2-teiligen Serie über wie man Lambda-Funktionen mit Qumulo verwendet. In Teil 1 haben wir Python-Bindungen für die Qumulo-API gepackt und sie als Layer in AWS Lambda hochgeladen. Lassen Sie uns nun diese Ebene verwenden!

So erstellen Sie eine Lambda-Funktion zum Rotieren des Administratorkennworts eines Clusters

Lassen Sie uns eine Lambda-Funktion erstellen, um das Admin-Passwort des Clusters zu rotieren. Wir werden verwenden AWS Secrets Manager, ein Dienst zum Verwalten und Speichern von Anmeldeinformationen, an rotieren Sie das Passwort unseres Qumulo.

Durch die Nutzung dieses Dienstes und der Qumulo-API können wir wiederkehrende, automatische Änderungen des Qumulo-Admin-Passworts planen. Andere Dienste können dann über die AWS Secrets Manager-API auf das aktuelle Admin-Passwort zugreifen.

Dieses Kochbuch verwendet AWS Lambda, IAM, AWS Secrets Manager und a Qumulo-Cluster, der in AWS ausgeführt wird. Sammeln Sie zunächst Folgendes:

  • Das Admin-Passwort Ihres Qumulo-Clusters
  • Eine IP-Adresse für den Qumulo-Cluster
  • Die Subnetz-ID und Sicherheitsgruppen-ID, die den Qumulo-Cluster enthalten
  • Der ARN der im ersten Beitrag erstellten Lambda-Schicht

So erstellen Sie ein Geheimnis in AWS Secrets Manager zum Speichern von Cluster-Anmeldeinformationen

Lassen Sie uns zunächst ein Geheimnis in AWS Secrets Manager erstellen, um die Anmeldeinformationen des Qumulo-Clusters zu speichern. (Wir gehen davon aus, dass einige Variablennamen in der Region US West 2 ausgeführt werden. Passen Sie diese Werte für Ihre Umgebung an.) Ersetzen Sie Zeichenfolgen in Karotten durch Werte aus Ihrer Umgebung.

1. Füllen Sie die Lücken aus und führen Sie diesen Befehl aus:

aws secretsmanager create-secret --name "my-qumulo-credentials" --description "credentials for my qumulo cluster" --secret-string '{"username":"admin", "password":"", "host" :"[IP eines Knotens im Cluster]"}'

2. Notieren Sie sich den ARN des Geheimnisses aus der Ausgabe zur späteren Bezugnahme.

Wir werden gleich eine Lambda-Funktion erstellen, um dieses Geheimnis zu verwalten. Zuvor müssen wir eine IAM-Rolle erstellen, die die Lambda-Funktion übernimmt. Wir werden dieser Rolle im Laufe der Zeit Berechtigungen zuweisen.

1. Führen Sie diesen Befehl aus:

aws iam create-role --role-name QumuloSecretRotationRole --assume-role-policy-document '{"Version": "2012-10-17", "Statement": [{"Action": "sts:AssumeRole", "Effekt": "Zulassen", "Prinzipal": {"Dienst": "lambda.amazonaws.com"}}]}'

2. Notieren Sie sich den ARN der erstellten IAM-Rolle zur späteren Bezugnahme.

Die Lambda-Funktion benötigt Zugriff auf AWS CloudWatch, um Protokolle hochzuladen, und auf die VPC des Qumulo-Clusters, um das Administratorkennwort zu ändern. Die Rolle AWSLambdaVPCAccessExecutionRole</var/www/wordpress> is perfect for this situation.

1. Führen Sie diesen Befehl aus:

aws iam attachment-role-policy --role-name QumuloSecretRotationRole --policy-arn "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"

Erstellen Sie die Lambda-Funktion aus dem Beispiel auf dem Qumulo Github. Wir konfigurieren die Lambda-Funktion so, dass sie den erstellten Lambda-Layer verwendet im ersten Beitrag. Die Funktion implementiert Rotationsworkflow von Secret Manager.

1. Git-Klon https://github.com/Qumulo/cloud-samples.git
2. CD-Lambda
3. zip ./qumulo_secret_rotation_lambda.zip ./qumulo_secret_rotation_lambda.py
4. Führen Sie diesen Befehl aus:

aws lambda create-function --function-name "QumuloAdminPasswordRotationFunction" --runtime "python2.7" --handler "qumulo_secret_rotation_lambda.lambda_handler" --zip-file fileb://qumulo_rotation_lambda.zip --layers "[Qumulo API Layer ARN ]" --vpc-config "SubnetIds=[Qumulos Subnetz],SecurityGroupIds=[Qumulos Sicherheitsgruppe]" --timeout 30 --description "Rotieren Sie das Admin-Passwort eines Qumulo-Clusters" --publish --environment "Variables={SECRETS_MANAGER_ENDPOINT= https://secretsmanager.us-west-2.amazonaws.com}" --role "[IAM-Rolle ARN]"

5. Notieren Sie sich den Lambda-Funktions-ARN zum späteren Nachschlagen.

Dem AWS Secrets Manager-Dienst muss die Berechtigung erteilt werden, unsere Lambda-Funktion aufzurufen. Führen Sie diesen Befehl aus:

aws lambda add-permission --function-name "[lambda function ARN]" --statement-id SecretsManagerInvocation --principal "secretsmanager.amazonaws.com" --action "lambda:InvokeFunction"

Nachdem wir nun eine Lambda-Funktion erstellt haben, können wir ihr die Berechtigung erteilen, das Qumulo-Geheimnis zu ändern. Wir möchten, dass Benutzer dieser Funktion das Geheimnis nur über die Funktion ändern können, was wir erreichen, indem wir den ARN der Funktion in der Richtlinie angeben. Nach diesem Schritt sind alle benötigte Berechtigungen Um unsere Lambda-Funktion aufzurufen und sie ihre Aufgabe erledigen zu lassen, sollte konfiguriert werden.

1. Bearbeiten Sie qumulo-lambda-samples/qumulo_secret_rotation_policy.json, indem Sie es durch das oben angegebene ersetzen.
2. Führen Sie diesen Befehl aus:

aws iam put-role-policy --role-name QumuloSecretRotationRole --policy-name "QumuloSecretRotationPolicy" --policy-document file://qumulo_secret_rotation_policy.json

Nachdem wir nun ein Geheimnis, eine Funktion und Berechtigungen konfiguriert haben, können wir die Lambda-Funktion mit dem Geheimnis verknüpfen und die automatische Rotation aktivieren.

Führe diesen Befehl aus:

aws Secretsmanager Rotate-Secret --secret-id "" --rotation-lambda-arn "[Lambda-Funktions-ARN]" --rotation-rules "AutomaticallyAfterDays=30"

Eine Rotation wurde automatisch ausgelöst. Nehmen Sie sich eine Minute Zeit, um den Vorgang abzuschließen, und überprüfen Sie dann den Secrets Manager, um das neue Passwort zu sehen (oder die CloudWatch-Protokolle, um etwaige Probleme zu erkennen). Dieser Befehl ruft das Geheimnis ab:

aws Secretsmanager get-secret-value --secret-id „[geheimer ARN]“

Jetzt ist Ihr Qumulo-Passwort an einem sicheren Ort und wird regelmäßig geändert!

In einem zukünftigen Beitrag werden wir S3-Benachrichtigungen und die Qumulo-API verwenden, um eine Lambda-Funktion zu schreiben, die Dateien nach Qumulo kopiert, wenn sie in einem S3-Bucket erscheinen. Wir nutzen das hier erstellte Geheimnis, um uns programmgesteuert beim Cluster anzumelden und Dateien hochzuladen.

Verwandte Artikel

Nach oben scrollen