Docs 菜单
Docs 主页
/ /

AWS IAM 身份验证

MONGODB Amazon Web Services身份验证机制使用Amazon Web Services Identity and Access Management (Amazon Web Services IAM)凭证对MongoDB的用户进行身份验证。只有在向MongoDB Atlas进行身份验证时才能使用此机制。

提示

为Amazon Web Services IAM 身份验证配置Atlas

要学习;了解有关为Amazon Web Services IAM身份验证配置MongoDB Atlas 的更多信息,请参阅Atlas文档中的 使用Amazon Web Services IAM 设置身份验证。

要使用 MONGODB-AWS身份验证机制,请将 'MONGODB-AWS' 指定为 authMechanism 连接选项的值。

注意

MongoDB PHP库使用 libmongoc 的 MONGODB-AWS身份验证机制实现。要学习有关将此身份验证机制与 libmongoc 结合使用的更多信息,请参阅C驱动程序文档中的通过 AWS IAM 进行身份验证

使用 MONGODB-AWS 机制时,驱动程序会尝试按列出的顺序从以下来源检索 AWS 凭证:

  1. 作为连接 URI 的一部分或选项参数传递给MongoDB\Client的选项

  2. 环境变量

  3. Amazon Web Services EKS AssumeRoleWithWebIdentity请求

  4. ECS容器元数据

  5. EC 2实例元数据

以下部分介绍如何从这些来源检索凭证并使用它们对PHP应用程序进行身份验证。

首先,驱动程序会检查您是否将 AWS 凭证作为连接 URI 的一部分或作为 $uriOptions 数组参数传递给 MongoDB\Client 构造函数。要将您的凭证传递给 MongoDB\Client,设立以下连接选项:

  • username:要进行身份验证的Amazon Web Services IAM 访问密钥ID 。 在将其包含在连接 URI 中之前,对该值进行百分比编码。

  • password: Amazon Web Services IAM 秘密访问密钥。 在将其包含在连接 URI 中之前,对该值进行百分比编码。

  • authMechanism:设置为'MONGODB-AWS'

您可以通过两种方式设立这些选项:将选项大量传递给 MongoDB\Client 构造函数,或通过连接 URI 中的参数。选择 MongoDB\ClientConnection URI标签页以查看相应的代码:

$uriOptions = [
'username' => '<AWS IAM access key ID>',
'password' => '<AWS IAM secret access key>',
'authMechanism' => 'MONGODB-AWS',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);
$uri = 'mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

如果在构造 MongoDB\Client对象时未提供用户名和密码,驱动程序会尝试从以下环境变量中检索AWS凭证:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

要使用这些环境变量对应用程序进行身份验证,请先设立它们设置为身份验证所需的Amazon Web Services IAM 值。 您可以在shell中运行export 命令或将变量添加到 .env文件,如以下代码示例:

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>
AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
AWS_SESSION_TOKEN=<AWS session token>

重要

不要对这些环境变量中的值进行百分比编码。

设立这些环境变量后,设立authMechanism连接选项设置为'MONGODB-AWS'

以下示例设置authMechanism连接选项。 您可以通过两种方式设立此选项:将选项大量传递给MongoDB\Client构造函数,或通过连接 URI 中的参数。

$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
['authMechanism' => 'MONGODB-AWS'],
);
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

提示

AWS Lambda

Amazon Web Services Lambda运行时可以在初始化期间自动设立这些环境变量。 有关在Amazon Web Services Lambda环境中使用环境变量的更多信息,请参阅Amazon Web Services文档中的使用Lambda环境变量 。

如果您的应用程序对来自 OpenID Connect (OIDC) 身份提供程序的 EKS 集群的用户进行身份验证,则驱动程序可以发出 AssumeRoleWithWebIdentity 请求,以将 OIDC 令牌交换为应用程序的临时 AWS 凭证。

要使用 AssumeRoleWithWebIdentity请求返回的临时Amazon Web Services IAM凭证进行身份验证,请确保您的环境中存在Amazon Web Services配置文件并且已正确配置。 要学习;了解如何创建和配置Amazon Web Services配置文件,请参阅配置 Amazon Web Services文档中的配置。

AssumeRoleWithWebIdentity请求配置环境后,设立authMechanism连接选项设置为'MONGODB-AWS' 。 要查看设置authMechanism选项的示例,请参阅本页上的authMechanism示例

提示

有关使用 AssumeRoleWithWebIdentity 请求对应用程序进行身份验证的更多信息,请参阅以下Amazon Web Services文档:

如果您的应用程序在弹性容器服务 (ECS)容器中运行,则驱动程序可以自动从 ECS 终结点检索临时 AWS凭证。为此,请在名为 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 的环境变量中指定 ECS 终结点的 URI。您可以通过运行export shell 命令或将其添加到 .env 文件设立此变量,如以下示例所示:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

设立环境变量后,设立authMechanism连接选项设置为'MONGODB-AWS' 。 要查看设置authMechanism选项的示例,请参阅本页上的authMechanism示例

驱动程序可以自动从Amazon Elastic Cloud Compute (EC2)实例检索临时 AWS凭证。要使用 EC2实例中的临时凭证,请将 authMechanism 连接选项设立为 'MONGODB-AWS'。要查看设置 authMechanism 选项的示例,请参阅本页上的 authMechanism示例

注意

仅当未设立环境变量部分中描述的环境变量时, MongoDB PHP库才会从 EC 2实例检索凭证。

要学习;了解有关在MongoDB PHP库中创建MongoDB\Client对象的更多信息,请参阅创建MongoDB客户端指南。

要学习;了解有关连接选项的更多信息,请参阅指定连接选项指南。

后退

x.509

在此页面上