快速入门:Secrets 管理

开始使用 Dapr 的 Secrets Management 构建块

Dapr 提供了一个专用的秘钥 API,允许开发者从秘钥存储中检索秘钥。 在本快速入门中,您将:

  1. 使用密钥存储组件运行微服务。
  2. 在应用程序代码中使用 Dapr 密钥 API 检索密钥。

Diagram showing secrets management of example service.

在继续快速入门之前,请选择您首选的特定语言 Dapr SDK。

先决条件

对于此示例,您将需要:

第1步:设置环境

克隆在Quickstarts存储库中提供的示例

  1. git clone https://github.com/dapr/quickstarts.git

第2步:检索密钥

在一个终端窗口中,导航到 order-processor 目录。

  1. cd secrets_management/python/sdk/order-processor

安装依赖项:

  1. pip3 install -r requirements.txt

与 Dapr sidecar 一起运行 order-processor 服务。

  1. dapr run --app-id order-processor --resources-path ../../../components/ -- python3 app.py

注意:由于Python3.exe在Windows中未定义,您可能需要使用python app.py而不是python3 app.py

在这个幕后

`order-processor 服务

请注意下面的 order-processor 服务指向:

  • DAPR_SECRET_STORE 定义于 local-secret-store.yaml 组件。
  • secrets.json 中定义的密钥。
  1. # app.py
  2. DAPR_SECRET_STORE = 'localsecretstore'
  3. SECRET_NAME = 'secret'
  4. with DaprClient() as client:
  5. secret = client.get_secret(store_name=DAPR_SECRET_STORE, key=SECRET_NAME)
  6. logging.info('Fetched Secret: %s', secret.secret)

local-secret-store.yaml 组件

DAPR_SECRET_STORE 在位于 secrets_management/componentslocal-secret-store.yaml 组件文件中定义:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: localsecretstore
  5. namespace: default
  6. spec:
  7. type: secretstores.local.file
  8. version: v1
  9. metadata:
  10. - name: secretsFile
  11. value: secrets.json
  12. - name: nestedSeparator
  13. value: ":"

在 YAML 文件中:

  • metadata/name 是应用程序引用组件的方式(在代码示例中称为 DAPR_SECRET_STORE)。
  • spec/metadata定义了组件使用的密钥的连接。

secrets.json 文件

SECRET_NAME 在位于 secrets_management/python/sdk/order-processorsecrets.json 文件中定义:

  1. {
  2. "secret": "YourPasskeyHere"
  3. }

第3步:查看order-processor输出

如上面的应用程序代码中所指定的,order-processor服务通过Dapr密钥存储检索密钥,并在控制台中显示。

Order-processor输出:

  1. == APP == INFO:root:Fetched Secret: {'secret': 'YourPasskeyHere'}

先决条件

对于此示例,您将需要:

第1步:设置环境

克隆在Quickstarts存储库中提供的示例

  1. git clone https://github.com/dapr/quickstarts.git

第2步:检索密钥

在一个终端窗口中,导航到 order-processor 目录。

  1. cd secrets_management/javascript/sdk/order-processor

安装依赖项:

  1. npm install

与 Dapr sidecar 一起运行 order-processor 服务。

  1. dapr run --app-id order-processor --resources-path ../../../components/ -- npm start

在这个幕后

`order-processor 服务

请注意下面的 order-processor 服务指向:

  • DAPR_SECRET_STORE 定义于 local-secret-store.yaml 组件。
  • secrets.json 中定义的密钥。
  1. // index.js
  2. const DAPR_SECRET_STORE = "localsecretstore";
  3. const SECRET_NAME = "secret";
  4. async function main() {
  5. // ...
  6. const secret = await client.secret.get(DAPR_SECRET_STORE, SECRET_NAME);
  7. console.log("Fetched Secret: " + JSON.stringify(secret));
  8. }

local-secret-store.yaml 组件

DAPR_SECRET_STORE 在位于 secrets_management/componentslocal-secret-store.yaml 组件文件中定义:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: localsecretstore
  5. namespace: default
  6. spec:
  7. type: secretstores.local.file
  8. version: v1
  9. metadata:
  10. - name: secretsFile
  11. value: secrets.json
  12. - name: nestedSeparator
  13. value: ":"

在 YAML 文件中:

  • metadata/name 是应用程序引用组件的方式(在代码示例中称为 DAPR_SECRET_STORE)。
  • spec/metadata定义了组件使用的密钥的连接。

secrets.json 文件

SECRET_NAME 在位于 secrets_management/javascript/sdk/order-processorsecrets.json 文件中定义:

  1. {
  2. "secret": "YourPasskeyHere"
  3. }

第3步:查看order-processor输出

如上面的应用程序代码中所指定的,order-processor服务通过Dapr密钥存储检索密钥,并在控制台中显示。

Order-processor输出:

  1. == APP ==
  2. == APP == > order-processor@1.0.0 start
  3. == APP == > node index.js
  4. == APP ==
  5. == APP == Fetched Secret: {"secret":"YourPasskeyHere"}

先决条件

对于此示例,您将需要:

第1步:设置环境

克隆在Quickstarts存储库中提供的示例

  1. git clone https://github.com/dapr/quickstarts.git

第2步:检索密钥

在一个终端窗口中,导航到 order-processor 目录。

  1. cd secrets_management/csharp/sdk/order-processor

安装依赖项:

  1. dotnet restore
  2. dotnet build

与 Dapr sidecar 一起运行 order-processor 服务。

  1. dapr run --app-id order-processor --resources-path ../../../components/ -- dotnet run

在这个幕后

`order-processor 服务

请注意下面的 order-processor 服务指向:

  • DAPR_SECRET_STORE 定义于 local-secret-store.yaml 组件。
  • secrets.json 中定义的密钥。
  1. // Program.cs
  2. const string DAPR_SECRET_STORE = "localsecretstore";
  3. const string SECRET_NAME = "secret";
  4. var client = new DaprClientBuilder().Build();
  5. var secret = await client.GetSecretAsync(DAPR_SECRET_STORE, SECRET_NAME);
  6. var secretValue = string.Join(", ", secret);
  7. Console.WriteLine($"Fetched Secret: {secretValue}");

local-secret-store.yaml 组件

DAPR_SECRET_STORE 在位于 secrets_management/componentslocal-secret-store.yaml 组件文件中定义:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: localsecretstore
  5. namespace: default
  6. spec:
  7. type: secretstores.local.file
  8. version: v1
  9. metadata:
  10. - name: secretsFile
  11. value: secrets.json
  12. - name: nestedSeparator
  13. value: ":"

在 YAML 文件中:

  • metadata/name是您的应用程序引用组件的方式(在代码示例中称为DAPR_SECRET_NAME)。
  • spec/metadata定义了组件使用的密钥的连接。

secrets.json 文件

SECRET_NAME 在位于 secrets_management/csharp/sdk/order-processorsecrets.json 文件中定义:

  1. {
  2. "secret": "YourPasskeyHere"
  3. }

第3步:查看order-processor输出

如上面的应用程序代码中所指定的,order-processor服务通过Dapr密钥存储检索密钥,并在控制台中显示。

Order-processor输出:

  1. == APP == Fetched Secret: [secret, YourPasskeyHere]

先决条件

对于此示例,您将需要:

第1步:设置环境

克隆在Quickstarts存储库中提供的示例

  1. git clone https://github.com/dapr/quickstarts.git

第2步:检索密钥

在一个终端窗口中,导航到 order-processor 目录。

  1. cd secrets_management/java/sdk/order-processor

安装依赖项:

  1. mvn clean install

与 Dapr sidecar 一起运行 order-processor 服务。

  1. dapr run --app-id order-processor --resources-path ../../../components/ -- java -jar target/OrderProcessingService-0.0.1-SNAPSHOT.jar

在这个幕后

`order-processor 服务

请注意下面的 order-processor 服务指向:

  • DAPR_SECRET_STORE 定义于 local-secret-store.yaml 组件。
  • secrets.json 中定义的密钥。
  1. // OrderProcessingServiceApplication.java
  2. private static final String SECRET_STORE_NAME = "localsecretstore";
  3. // ...
  4. Map<String, String> secret = client.getSecret(SECRET_STORE_NAME, "secret").block();
  5. System.out.println("Fetched Secret: " + secret);

local-secret-store.yaml 组件

DAPR_SECRET_STORE 在位于 secrets_management/componentslocal-secret-store.yaml 组件文件中定义:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: localsecretstore
  5. namespace: default
  6. spec:
  7. type: secretstores.local.file
  8. version: v1
  9. metadata:
  10. - name: secretsFile
  11. value: secrets.json
  12. - name: nestedSeparator
  13. value: ":"

在 YAML 文件中:

  • metadata/name是您的应用程序引用组件的方式(在代码示例中称为DAPR_SECRET_NAME)。
  • spec/metadata定义了组件使用的密钥的连接。

secrets.json 文件

SECRET_NAME 在位于 secrets_management/java/sdk/order-processorsecrets.json 文件中定义:

  1. {
  2. "secret": "YourPasskeyHere"
  3. }

第3步:查看order-processor输出

如上面的应用程序代码中所指定的,order-processor服务通过Dapr密钥存储检索密钥,并在控制台中显示。

Order-processor输出:

  1. == APP == Fetched Secret: {secret=YourPasskeyHere}

先决条件

对于此示例,您将需要:

第1步:设置环境

克隆在Quickstarts存储库中提供的示例

  1. git clone https://github.com/dapr/quickstarts.git

第2步:检索密钥

在一个终端窗口中,导航到 order-processor 目录。

  1. cd secrets_management/go/sdk/order-processor

安装依赖项:

  1. go build .

与 Dapr sidecar 一起运行 order-processor 服务。

  1. dapr run --app-id order-processor --resources-path ../../../components/ -- go run .

在这个幕后

`order-processor 服务

请注意下面的 order-processor 服务指向:

  • DAPR_SECRET_STORE 定义于 local-secret-store.yaml 组件。
  • secrets.json 中定义的密钥。
  1. const DAPR_SECRET_STORE = "localsecretstore"
  2. const SECRET_NAME = "secret"
  3. // ...
  4. secret, err := client.GetSecret(ctx, DAPR_SECRET_STORE, SECRET_NAME, nil)
  5. if secret != nil {
  6. fmt.Println("Fetched Secret: ", secret[SECRET_NAME])
  7. }

local-secret-store.yaml 组件

DAPR_SECRET_STORE 在位于 secrets_management/componentslocal-secret-store.yaml 组件文件中定义:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: localsecretstore
  5. namespace: default
  6. spec:
  7. type: secretstores.local.file
  8. version: v1
  9. metadata:
  10. - name: secretsFile
  11. value: secrets.json
  12. - name: nestedSeparator
  13. value: ":"

在 YAML 文件中:

  • metadata/name是您的应用程序引用组件的方式(在代码示例中称为DAPR_SECRET_NAME)。
  • spec/metadata定义了组件使用的密钥的连接。

secrets.json 文件

SECRET_NAME 在位于 secrets_management/go/sdk/order-processorsecrets.json 文件中定义:

  1. {
  2. "secret": "YourPasskeyHere"
  3. }

第3步:查看order-processor输出

如上面的应用程序代码中所指定的,order-processor服务通过Dapr密钥存储检索密钥,并在控制台中显示。

Order-processor输出:

  1. == APP == Fetched Secret: YourPasskeyHere

告诉我们您的想法

我们一直在努力改进我们的快速入门示例,并重视您的反馈。 您觉得此快速入门有帮助吗? 您有改进的建议吗?

加入我们的discord频道参与讨论。

下一步

探索 Dapr 教程 >>