Referenzieren von AWS Secrets Manager-Geheimnissen über Parameter Store-Parameter
AWS Secrets Manager hilft Ihnen, wichtige Konfigurationsdaten wie z. B. Anmeldeinformationen, Passwörter und Lizenzschlüssel zu organisieren und zu verwalten. Parameter Store, eine Funktion von AWS Systems Manager, ist jetzt mit Secrets Manager integriert, sodass Sie Secrets-Manager-Geheimnisse abrufen können, wenn Sie andere AWS-Services verwenden, die bereits Verweise auf Parameter Store-Parameter unterstützen. Zu diesen Services gehören Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy und andere Systems Manager-Funktionen. Indem Sie Parameter Store zum Verweisen auf Secrets Manager-Geheimnisse verwenden, erstellen Sie einen konsistenten und sicheren Prozess zum Aufrufen und Verwenden von Geheimnissen und zum Referenzieren von Daten in Ihrem Code und den Konfigurationsskripts.
Weitere Informationen zu Secrets Manager finden Sie unter Was ist AWS Secrets Manager? im AWS Secrets Manager-Benutzerhandbuch.
Einschränkungen
Beachten Sie die folgenden Einschränkungen bei der Verwendung von Parameter Store zur Referenzierung von Secrets Manager-Geheimnissen:
-
Sie können Secrets Manager-Geheimnisse nur mit den API-Aktionen GetParameter und GetParameters abrufen. Änderungsoperationen und frühzeitige Abfragen von API-Operationen, wie z. B. DescribeParameters oder GetParametersByPath werden für Secrets Manager nicht unterstützt.
-
Sie können die AWS Command Line Interface (AWS CLI), AWS Tools for Windows PowerShell und die SDKs zum Abrufen eines Geheimnisses mit Hilfe von Parameter Store verwenden.
-
Secrets Manager Secrets in Parameter Store müssen das Präfix
/aws/reference/secretsmanager
haben. Im Folgenden sind einige Beispiele aufgeführt:/aws/reference/secretsmanager/CFCreds1
/aws/reference/secretsmanager/myapp/db/password
-
Parameter Store berücksichtigt AWS Identity and Access Management (IAM)-Richtlinien, die Secrets Manager-Geheimnissen zugeordnet sind. Beispiel: Wenn Benutzer 1 keinen Zugriff auf Geheimnis A hat, kann er das Geheimnis nicht mithilfe von Parameter Store abrufen.
-
Parameter, die Secrets Manager-Geheimnisse referenzieren, können die Parameter Store-Versioning- oder Verlaufsfunktionen nicht verwenden.
-
Parameter Store berücksichtigt Secrets Manager Versionsstufen. Wenn Sie eine Versionsstufe referenzieren, verwendet diese Buchstaben, Zahlen, einen Punkt (.), Bindestrich (-) oder Unterstrich (_). Alle anderen Symbole, die in der Versionsstufe angegeben sind, führen dazu, dass die Referenz fehlschlägt.
Referenzieren eines Secrets Manager-Geheimnisses mit Parameter Store
Im folgenden Verfahren wird beschrieben, wie Sie ein Secrets Manager-Geheimnis mithilfe von Parameter Store-APIs referenzieren. Das Verfahren referenziert weitere Verfahren im AWS Secrets Manager-Benutzerhandbuch.
Anmerkung
Bevor Sie beginnen, stellen Sie sicher, dass Sie über die Berechtigung zum Referenzieren von Secrets Manager-Geheimnissen in Parameter Store-Parametern verfügen. Wenn Sie über Administratorrechte in Secrets Manager und Systems Manager verfügen, können Sie Geheimnisse mithilfe von Parameter Store-APIs. Wenn Sie ein Secrets Manager-Geheimnis in einem Parameter Store-Parameter referenzieren und nicht über die Berechtigung für den Zugriff auf dieses Geheimnis verfügen, schlägt die Referenz fehl. Weitere Informationen finden Sie unter Authentifizierung und Zugriffskontrolle für AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.
Wichtig
Parameter Store funktioniert als Pass-Through-Service für Verweise auf Secrets Manager-Geheimnisse. Parameter Store bewahrt keine Daten oder Metadaten über Geheimnisse auf. Die Referenz ist zustandslos.
Referenzieren eines Secrets Manager-Geheimnisses mit Parameter Store
-
Erstellen Sie ein Geheimnis in Secrets Manager. Weitere Informationen finden Sie unter Erstellen und Verwalten von Secrets mit AWS Secrets Manager.
-
Referenzieren Sie ein Geheimnis über die AWS CLI, mit AWS Tools for Windows PowerShell oder mit SDK. Wenn Sie ein Secrets Manager-Geheimnis referenzieren, muss der Name mit dem folgenden reservierten Pfad beginnen:
/aws/reference/secretsmanager/
. Durch die Angabe dieses Pfads wird Systems Manager mitgeteilt, das Geheimnis von Secrets Manager anstelle von Parameter Store abzurufen. Hier sind einige Beispielnamen, die korrekt auf die Geheimnisse des Secrets Managers verweisen,CFCreds1
undDBPass
mithilfe von Parameter Store referenzieren.-
/aws/reference/secretsmanager/CFCreds1
-
/aws/reference/secretsmanager/DBPass
Das folgende Java-Codebeispiel referenziert einen in Secrets Manager gespeicherten access-key und einen secret-key. In diesem Codebeispiel wird ein Amazon DynamoDB-Client eingerichtet. Der Code ruft die Konfigurationsdaten und Anmeldeinformationen von Parameter Store ab. Die Konfigurationsdaten werden als Zeichenfolgeparameter in Parameter Store und die Anmeldeinformationen in Secrets Manager gespeichert. Auch wenn die Konfigurationsdaten und Anmeldeinformationen in separaten Diensten gespeichert sind, kann auf beide Datensätze über Parameter Store mithilfe der
GetParameter
-API zugegriffen werden./** * Initialize Systems Manager client with default credentials */ AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient(); ... /** * Example method to launch DynamoDB client with credentials different from default * @return DynamoDB client */ AmazonDynamoDB getDynamoDbClient() { //Getting AWS credentials from Secrets Manager using GetParameter BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials( getParameter("/aws/reference/secretsmanager/
access-key
"), getParameter("/aws/reference/secretsmanager/secret-key
")); //Initialize the DynamoDB client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting configuration from Parameter Store .build(); return client; } /** * Helper method to retrieve parameter value * @param parameterName identifier of the parameter * @return decrypted parameter value */ public GetParameterResult getParameter(String parameterName) { GetParameterRequest request = new GetParameterRequest(); request.setName(parameterName); request.setWithDecryption(true); return ssm.newGetParameterCall().call(request).getParameter().getValue(); }Hier sind einige AWS CLI-Beispiele. Verwenden des
aws secretsmanager list-secrets
-Befehls, um die Namen Ihrer Geheimnisse zu finden.AWS CLI Beispiel 1: Referenz durch Verwenden des Geheimnisnamens
Der Befehl gibt Informationen wie die folgenden zurück.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"aaabbbccc-1111-222-333-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", } }
AWS CLI-Beispiel 2: Referenz mit der Versions-ID
Der Befehl gibt Informationen wie die folgenden zurück.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":11111-aaa-bbb-ccc-123456789" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
AWS CLI Beispiel 3: Referenz mit der Versionsstufe
Der Befehl gibt Informationen wie die folgenden zurück.
{ "Parameter": { "Name": "/aws/reference/secretsmanager/s1-secret", "Type": "SecureString", "Value": "Fl*MEishm!al875", "Version": 0, "SourceResult": "{ \"CreatedDate\": 1526334434.743, \"Name\": \"s1-secret\", \"VersionId\": \"11111-aaa-bbb-ccc-123456789\", \"SecretString\": \"Fl*MEishm!al875\", \"VersionStages\": [\"AWSCURRENT\"], \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\" }" "Selector": ":AWSCURRENT" } "LastModifiedDate": 2018-05-14T21:47:14.743Z, "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret- E18LRP", }
-