AWS 认证

关于 AWS 的认证和配置选项

所有使用 AWS 服务(如DynamoDB、SQS、S3等) 的 Dapr 组件都使用一套标准化的属性进行配置,这些属性描述如下。

这篇文章提供了关于(Dapr 使用的) AWS SDK 如何处理证书的概述

以下属性都不是必需的,因为 AWS SDK 可以使用上面链接中描述的默认供应链进行配置。 测试组件配置并检查 Dapr 运行时的日志输出以确保组件正确初始化是很重要的。

  • region。要连接到哪个 AWS 区域。 在某些情况下(例如在自托管模式下运行 Dapr 时),这个标志可以由环境变量 AWS_REGION 提供。 因为 Dapr sidecar 注入不允许配置 Dapr sidecar 上的环境变量。 建议在组件中始终设置 region 属性。
  • endpoint: endpoint 通常由 AWS 管理。 然而,在某些情况下,在本地设置 endpoint 可能是有意义的:例如,如果是针对 DynamoDB Local 进行开发,
  • accessKey: AWS Access key id.
  • secretKey: AWS Secret access key. 与accessKey 一起使用确定信任凭据。
  • sessionToken: AWS Session token. 与 accessKeysecretKey 一起使用。 当使用普通 IAM 用户的 access key和密钥时,通常不需要session token。

在组件清单文件中明确指定凭证的替代方法

在生产场景中,建议使用 KiamKube2iam 等解决方案。 如果在 AWS EKS 上运行,你可以 将 IAM 角色链接到 Kubernetes 服务帐户,你的 pod 可以使用该帐户。

所有这些解决方案都解决了同样的问题:它们允许 Dapr 运行时进程(或sidecar)动态地重新获取凭证,因此不需要显式凭证。 这样做有几个好处,比如自动轮换访问密钥,避免必须管理密钥。

Kiam 和 Kube2IAM 都是通过拦截对 实例元数据服务的调用来工作的。

在 AWS EC2 上以单机模式运行时使用实例角色/配置文件

如果直接在 AWS EC2 实例上以单机模式运行 Dapr,可以使用实例配置文件。 只需配置一个 iam 角色并将其附加到 ec2 实例的实例配置文件中,Dapr 就能对 AWS 进行身份验证,而无需在 Dapr 组件清单中指定证书。

以单机模式在本地运行 dapr 时验证到 AWS

当在单机模式下运行Dapr(或直接运行Dapr时)时,你可以选择像这样在进程中注入环境变量(在Linux/MacOS上)。

FOO=bar daprd --app-id myapp

如果你在本地有配置的名为 AWS 的配置文件,您可以通过指定 “AWS_PROFILE” 环境变量来告诉 Dapr(或 Dapr运行时)要使用哪个配置文件:

AWS_PROFILE=myprofile dapr run...

or

AWS_PROFILE=myprofile daprd...

你可以使用任何支持的环境变量以这种方式配置 Dapr。

在 Windows 上,需要在启动 daprdaprd 命令之前设置环境变量,不支持如上图所示的内联操作。

如果使用基于 AWS SSO 的配置文件,则向 AWS 进行身份验证

如果你使用 AWS SSO进行身份验证,一些 AWS SDK(包括 Go SDK)还不支持此功能。 你可以使用一些实用程序来 “桥接 “基于 AWS SSO 的凭证和 “传统 “凭证,例如 AwsHelperaws-sso-util

如果使用 AwsHelper,可以这样启动 Dapr:

AWS_PROFILE=myprofile awshelper dapr run...

or

AWS_PROFILE=myprofile awshelper daprd...

在 Windows 上,环境变量需要在启动 awshelper 命令之前进行设置,不支持如上所示的内联操作。