对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
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客户端指南。

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