如何使用:配置 secret 访问范围

通过设置访问范围限制应用程序从 secret 存储中读取的 secret

当您为应用程序配置了 secret 存储后,Dapr 应用程序默认可以访问该存储中定义的所有 secret。

您可以通过在应用程序配置中定义 secret 访问范围策略,来限制 Dapr 应用程序对特定 secret 的访问权限。

secret 访问范围策略适用于任何secret 存储,包括:

  • 本地 secret 存储
  • Kubernetes secret 存储
  • 公有云 secret 存储

有关如何设置secret 存储的详细信息,请阅读如何:检索 secret

观看此视频以了解如何在应用程序中使用 secret 访问范围的演示。

场景 1:拒绝访问 secret 存储中的所有 secret

在此示例中,所有 secret 访问都被拒绝给运行在 Kubernetes 集群上的应用程序,该集群配置了名为 mycustomsecretstoreKubernetes secret 存储。除了用户定义的自定义存储外,示例还配置了 Kubernetes 默认存储(名为 kubernetes),以确保所有 secret 都被拒绝访问。了解有关 Kubernetes 默认 secret 存储的更多信息

定义以下 appconfig.yaml 配置,并使用命令 kubectl apply -f appconfig.yaml 将其应用于 Kubernetes 集群。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  secrets:
    scopes:
      - storeName: kubernetes
        defaultAccess: deny
      - storeName: mycustomsecreststore
        defaultAccess: deny

对于需要拒绝访问 Kubernetes secret 存储的应用程序,请按照这些说明,并将以下注释添加到应用程序 pod:

dapr.io/config: appconfig

配置完成后,应用程序将无法访问 Kubernetes secret 存储中的任何 secret。

场景 2:仅允许访问 secret 存储中的某些 secret

此示例使用名为 vault 的 secret 存储。这可以是设置在应用程序上的 Hashicorp secret 存储组件。要允许 Dapr 应用程序仅访问 vault secret 存储中的 secret1secret2,请定义以下 appconfig.yaml

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  secrets:
    scopes:
      - storeName: vault
        defaultAccess: deny
        allowedSecrets: ["secret1", "secret2"]

vault secret 存储的默认访问是 deny,但应用程序可以根据 allowedSecrets 列表访问特定的 secret。了解如何将配置应用于 sidecar

场景 3:拒绝访问 secret 存储中的某些敏感 secret

定义以下 config.yaml

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  secrets:
    scopes:
      - storeName: vault
        defaultAccess: allow # 这是默认值,可以省略
        deniedSecrets: ["secret1", "secret2"]

此示例配置明确拒绝访问名为 vault 的 secret 存储中的 secret1secret2,同时允许访问所有其他 secret。了解如何将配置应用于 sidecar

权限优先级

allowedSecretsdeniedSecrets 列表的设置优先于 defaultAccess 策略。

场景 defaultAccess allowedSecrets deniedSecrets 权限
1 - 仅默认访问 deny/allow deny/allow
2 - 默认拒绝并允许列表 deny [“s1”] 仅 “s1” 可访问
3 - 默认允许并拒绝列表 allow [“s1”] 仅 “s1” 不可访问
4 - 默认允许并允许列表 allow [“s1”] 仅 “s1” 可访问
5 - 默认拒绝并拒绝列表 deny [“s1”] deny
6 - 默认拒绝/允许并同时有列表 deny/allow [“s1”] [“s2”] 仅 “s1” 可访问

相关链接