@@ -189,59 +189,105 @@ username and password to authenticate your user.
189
189
190
190
.. important::
191
191
192
- The MONGODB-AWS authentication mechanism is only available in MongoDB
192
+ The MONGODB-AWS authentication mechanism is available only in MongoDB
193
193
versions 4.4 and later.
194
194
195
195
The ``MONGODB-AWS`` authentication mechanism uses your Amazon Web Services
196
196
Identity and Access Management (AWS IAM) credentials to authenticate your
197
197
user.
198
198
199
- To specify the ``MONGODB-AWS`` authentication mechanism, perform the
200
- following:
199
+ To connect to a MongoDB instance with ``MONGODB-AWS`` authentication enabled,
200
+ specify the ``MONGODB-AWS`` authentication mechanism.
201
201
202
- - Assign the ``AuthMechanism`` option the value ``MONGODB-AWS``
203
- - Assign the ``Username`` option the value of your ``accessKeyID``
204
- - Assign the ``Password`` option the value of your ``secretAccessKey``
202
+ The driver checks for your credentials in the following sources in the order
203
+ they are listed:
205
204
206
- .. code-block:: go
207
- :emphasize-lines: 3, 5-6
205
+ 1. Connection string
206
+ #. Environment variables
207
+ #. Web identity token file
208
+ #. AWS ECS endpoint specified in the ``AWS_CONTAINER_CREDENTIALS_RELATIVE_URI``
209
+ environment variable
210
+ #. AWS EC2 endpoint. For more information, see `IAM Roles for Tasks
211
+ <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html>`_.
208
212
209
- var accessKeyID, secretAccessKey string
210
- awsCredential := options.Credential{
211
- AuthMechanism: "MONGODB-AWS",
212
- AuthSource: "<authenticationDb>",
213
- Username: "<accessKeyID>",
214
- Password: "<secretAccessKey>",
215
- }
216
- awsIAMClient, err := mongo.Connect(
217
- context.TODO(),
218
- options.Client().SetAuth(awsCredential))
219
- if err != nil {
220
- panic(err)
221
- }
222
- _ = awsIAMClient
213
+ .. important::
214
+
215
+ The driver obtains the credentials only from the first source in which they are found.
216
+ For example, if you specify your AWS credentials in the connection string, the
217
+ driver ignores any credentials that you have specified in environment variables.
223
218
224
- If you need to specify an AWS session token, use the temporary
225
- credentials returned from an assume role request.
219
+ .. tabs::
226
220
227
- To use temporary credentials, assign the ``AuthMechanismProperties``
228
- option the value of your ``sessionToken``:
221
+ .. tab:: Connection String
222
+ :tabid: connection string
229
223
230
- .. code-block:: go
231
- :emphasize-lines: 7-9
224
+ .. tip::
232
225
233
- var sessionToken string
234
- assumeRoleCredential := options.Credential{
235
- AuthMechanism: "MONGODB-AWS",
236
- AuthSource: "<authenticationDb>",
237
- Username: "<accessKeyID>",
238
- Password: "<secretAccessKey>",
239
- AuthMechanismProperties: map[string]string{
240
- "AWS_SESSION_TOKEN": "<sessionToken>",
241
- },
242
- }
243
- assumeRoleClient, err := mongo.Connect(context.TODO(),
244
- options.Client().SetAuth(assumeRoleCredential))
226
+ The following examples set the appropriate credentials by using the ``SetAuth()``
227
+ method. You can also specify these credentials by using the ``ApplyURI()``
228
+ method. If you use the ``ApplyURI()`` method you must URL encode the username
229
+ and password to ensure they are correctly parsed.
230
+
231
+ To connect to your MongoDB instance using your AWS IAM credentials, perform the
232
+ following steps:
233
+
234
+ - Assign the ``AuthMechanism`` option the value ``MONGODB-AWS``
235
+ - Assign the ``Username`` option the value of your ``accessKeyID``
236
+ - Assign the ``Password`` option the value of your ``secretAccessKey``
237
+
238
+ .. literalinclude:: /includes/fundamentals/code-snippets/authentication/aws-connection-string.go
239
+ :language: go
240
+
241
+ If you need to specify an AWS session token, use the temporary
242
+ credentials returned from an `assume role request <https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html>`__.
243
+
244
+ To use temporary credentials, assign the value of your ``sessionToken`` to
245
+ the ``AuthMechanismProperties`` option:
246
+
247
+ .. literalinclude:: /includes/fundamentals/code-snippets/authentication/aws-connection-string-session-token.go
248
+ :language: go
249
+
250
+ .. tab:: Environment Variables
251
+ :tabid: environment variables
252
+
253
+ To authenticate to your MongoDB instance using AWS credentials stored in
254
+ environment variables, use a shell to set the variables as follows:
255
+
256
+ .. code-block:: bash
257
+
258
+ export AWS_ACCESS_KEY_ID=<awsKeyId>
259
+ export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
260
+ export AWS_SESSION_TOKEN=<awsSessionToken>
261
+
262
+ .. note::
263
+
264
+ If you don't need an AWS session token for the role you're
265
+ authenticating with, omit the line containing ``AWS_SESSION_TOKEN`` .
266
+
267
+ After you've set the preceding environment variables, specify the ``MONGODB-AWS``
268
+ authentication mechanism as shown in the following example:
269
+
270
+ .. literalinclude:: /includes/fundamentals/code-snippets/authentication/aws-environment-variables.go
271
+ :language: go
272
+
273
+ .. tab:: Web Identity Token File
274
+ :tabid: web-identity-token-file
275
+
276
+ You can use the OpenID Connect (OIDC) token obtained from a web identity provider to authenticate
277
+ to Amazon Elastic Kubernetes Service (EKS) or other services.
278
+ To use an OIDC token, create a file that contains your token, then
279
+ set the absolute path to this file in an environment variable by using
280
+ a shell as shown in the following example:
281
+
282
+ .. code-block:: bash
283
+
284
+ export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
285
+
286
+ After you've set the preceding environment variable, specify the ``MONGODB-AWS``
287
+ authentication mechanism as shown in the following example:
288
+
289
+ .. literalinclude:: /includes/fundamentals/code-snippets/authentication/aws-environment-variables.go
290
+ :language: go
245
291
246
292
.. _golang-x509:
247
293
0 commit comments