Overview
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身份验证机制,请将 'MONGODB-AWS'
指定为 authMechanism
连接选项的值。
注意
MongoDB PHP库使用 libmongoc 的 MONGODB-AWS身份验证机制实施。 要学习;了解有关将此身份验证机制与 libmongoc 结合使用的更多信息,请参阅C驾驶员文档中的通过Amazon Web Services IAM 进行身份验证。
当您使用凭证 - Amazon Web Services机制时,驾驶员会尝试按列出的顺序从以下源检索Amazon Web Services档案:
作为连接 URI 的一部分或选项参数传递给
MongoDB\Client
的选项环境变量
Amazon Web Services EKS
AssumeRoleWithWebIdentity
请求ECS容器元数据
EC 2实例元数据
以下部分介绍如何从这些来源检索凭证并使用它们对PHP应用程序进行身份验证。
MongoDB\Client Credentials
首先,驾驶员检查您是否将Amazon Web Services凭证传递给 MongoDB\Client
构造函数,作为连接 URI 的一部分或 $uriOptions
大量参数。 要将您的凭证传递给MongoDB\Client
,请设立以下连接选项:
username
:要进行身份验证的Amazon Web Services IAM 访问密钥ID 。 在将其包含在连接 URI 中之前,对该值进行百分比编码。password
: Amazon Web Services IAM 秘密访问密钥。 在将其包含在连接 URI 中之前,对该值进行百分比编码。authMechanism
:设置为'MONGODB-AWS'
。
您可以通过两种方式设立这些选项:将选项大量传递给 MongoDB\Client
构造函数,或通过连接 URI 中的参数。选择 MongoDB\Client 或 Connection 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
对象时未提供用户名和密码,驾驶员会尝试从以下环境变量中检索Amazon Web Services凭证:
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);
AssumeRoleWithWebIdentity 请求
如果您的应用程序通过 OpenID Connect (OIDC) 身份提供商对 EKS集群的用户进行身份验证,则驾驶员可以发出 AssumeRoleWithWebIdentity
请求,用 OIDC 令牌交换应用程序的临时Amazon Web Services凭证。
要使用 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 Metadata
如果您的应用程序在弹性容器服务 (ECS)容器运行,则驾驶员可以自动从 ECS 端点检索临时Amazon Web Services凭证。 为此,请在名为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示例。
EC 2实例元数据
驾驶员可以自动从Amazon Web Services AmazonElastic Cloud Compute (EC)实例检索临时2 凭证。要使用 EC 2实例中的临时凭证,设立authMechanism
连接选项设置为'MONGODB-AWS'
。 要查看设置authMechanism
选项的示例,请参阅本页上的authMechanism示例。
注意
仅当未设立环境变量部分中描述的环境变量时, MongoDB PHP库才会从 EC 2实例检索凭证。
更多信息
要学习;了解有关在MongoDB PHP库中创建MongoDB\Client
对象的更多信息,请参阅创建MongoDB客户端指南。
要学习;了解有关连接选项的更多信息,请参阅指定连接选项指南。