Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Pymongo ドライバー
/ /

Amazon Web Services ID とアクセス管理

MONGODB-AWS認証メカニズムは、 Amazon Web Services Identity and Access Management(Amazon Web Services IAM)またはAmazon Web Services Lambda の認証情報を使用して、 MongoDBに対してユーザーを認証します。 このメカニズムは、 MongoDB Atlasに認証するときにのみ使用できます。

Tip

Amazon Web Services IAM 認証のための Atlas の設定

MongoDB Atlas をAmazon Web Services IAM認証用に構成する方法の詳細については、Atlas ドキュメントの 「Amazon Web Services IAM による認証の設定 」を参照してください。

このページのコード例では、次のプレースホルダーを使用します。

  • <hostname>: MongoDB Atlas配置のネットワークアドレス

  • <AWS IAM access key ID>: Amazon Web ServicesアクセスキーID

  • <AWS IAM secret access key>: Amazon Web Servicesシークレット アクセスキー

  • <AWS session token>: Amazon Web Servicesセッション トークン

このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。

重要

パーセント エンコーディング

ユーザー名とパスワードは、 MongoDB URI に含める前に、パーセント エンコードする必要があります。quote_plus() urllib.parse モジュールで使用可能な メソッドは、このタスクを実行する 1 つの方法です 。例、 を呼び出すとquote_plus("and / or") stringand+%2F+or が返されます。

ユーザー名またはパスワードをMongoClientに引数として渡す場合は、これらをパーセント エンコードしないでください。

Amazon Web Services IAM認証 を使用するには、次の例に示すように、aws オプションを使用してPyMongo をインストールする必要があります。

python -m pip install pymongo[aws]

PyMongoは、認証情報を処理するためにAmazon Web Services SDK であるPython 3 を使用します。 Boto3 は、次のソースからAmazon Web Servicesの認証情報を登録されている順序で取得しようとします。

  1. MongoClient コンストラクターまたは接続文字列内のパラメーターに渡される名前付き引数

  2. 環境変数

  3. 共有認証情報ファイル

  4. Amazon Web Services設定ファイル

  5. AssumeRole Amazon Web Services Security Token Service(STS)へのリクエスト

  6. AssumeRoleWithWebIdentity Amazon Web Services STS へのリクエスト

  7. IAM ロールが設定された Amazon EC 2インスタンスのインスタンス メタデータ サービス

以下のセクションでは、PyMongo を使用してこれらのソースから認証情報を取得し、その認証情報を使用してアプリケーションを認証する方法について説明します。

まず、 PyMongo は、 Amazon Web Services の認証情報を名前付き引数として、または接続文字列の一部として MongoClient コンストラクターに渡しているかどうかを確認します。 認証情報を MongoClient に渡すには、次の接続オプションを設定します。

  • username: 認証するAmazon Web Services IAM アクセスキーID 。 接続文字列に含める前に、この値をパーセント エンコードします。

  • password: Amazon Web Services IAM シークレット アクセス キー。 接続文字列に含める前に、この値をパーセント エンコードします。

  • authMechanism: "MONGODB-AWS"に設定します。

これらのオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"&authMechanism=MONGODB-AWS")
client = pymongo.MongoClient(uri)

MongoClient オブジェクトを構築するときにユーザー名とパスワードを指定しない場合、 PyMongoは次の環境変数からAmazon Web Servicesの認証情報を検索しようとします。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

これらの環境変数を使用してアプリケーションを認証するには、まず、次のコード例に示すように、認証に必要なAmazon Web Services IAM 値に設定します。

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>

重要

これらの環境変数の値をパーセント エンコードしないでください。

これらの環境変数を設定したら、 authMechanism接続オプションを"MONGODB-AWS"に設定します。 このオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)

Tip

AWS Lambda

AWS Lambdaランタイムは、初期化中にこれらの環境変数を自動的に設定できます。 AWS Lambda環境で環境変数を使用する方法の詳細については、 AWSドキュメントの「 Lambda環境変数の使用 」を参照してください。

PyMongoは前述の環境変数でAmazon Web Servicesの認証情報を見つけられない場合、共有認証情報ファイルからそれらを読み込もうとします。

共有認証情報ファイルを使用してアプリケーションを認証するには、ファイルが環境内に存在し、正しく構成されていることを確認します。共有認証情報ファイルの作成方法については、 Boto3 ドキュメントの 「認証情報」 およびAWSドキュメントの 「構成」 を参照してください。

共有認証情報ファイルを作成したら、 authMechanism接続オプションを"MONGODB-AWS"に設定します。 このオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)

Tip

PyMongo が認証に共有認証情報ファイルを使用しないようにするには、次のいずれかのアクションを実行します。

  • ターミナルで、 AWS_SHARED_CREDENTIALS_FILE環境変数を""に設定します。

  • スクリプトまたはアプリケーションにos.environ["AWS_SHARED_CREDENTIALS_FILE"] = ""を追加します。

  • Amazon Web ServicesMongoDB認証情報専用の プロファイルを作成します。AWS_PROFILE環境変数を、作成したプロファイルの名前に設定します。

PyMongoは共有認証情報ファイルで認証情報を見つけられない場合、 Amazon Web Services設定ファイルから認証情報を読み込もうとします。

AWS設定ファイルを使用してアプリケーションを認証するには、ファイルが環境内に存在し、正しく構成されていることを確認します。 AWS構成ファイルの作成方法については、 Boto3 ドキュメントの 「認証情報」 およびAWSドキュメントの 「構成」 を参照してください。

構成ファイルを作成したら、 authMechanism接続オプションを"MONGODB-AWS"に設定します。 このオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)

Amazon Web Servicesの認証情報をAmazon Web Servicesの設定ファイルに保存する代わりに、 PyMongoにAmazon Web Services STS エンドポイントへの AssumeRole リクエストを送信するよう指示できます。 このリクエストは、アプリケーションが認証に使用できる一時的な認証情報を返します。

リクエストによって返された一時的なAWS IAMAssumeRole 認証情報を使用して認証するには、 AWS設定ファイルが環境に存在し、正しく構成されていることを確認します。 AWS構成ファイル の作成および構成方法については、 Boto3 ドキュメントの 「認証情報」 およびAWSドキュメントの 「構成」 を参照してください。

構成ファイルを作成したら、次の接続オプションを設定します。

  • username: AssumeRoleリクエストによって返された認証用Amazon Web Services IAM アクセスキーID 。 接続文字列に含める前に、この値をパーセント エンコードします。

  • password: AssumeRoleリクエストによって返されたAmazon Web Services IAM シークレット アクセス キー。 接続文字列に含める前に、この値をパーセント エンコードします。

  • authMechanismProperties: AWS_SESSION_TOKEN:AssumeRole リクエストによって返されたAmazon Web Servicesセッション トークンに設定します。

  • authMechanism: "MONGODB-AWS"に設定します。

これらのオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://@<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanismProperties="AWS_SESSION_TOKEN:<AWS session token>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"authMechanismProperties=AWS_SESSION_TOKEN:<AWS session token>"
"&authMechanism=MONGODB-AWS")
client = pymongo.MongoClient(uri)

AssumeRoleリクエストを使用してアプリケーションを認証する方法の詳細については、次のAmazon Web Servicesドキュメントを参照してください。

重要

アプリケーションでは、EKS をサポートするためにpymongo_auth_aws v 1.1.0以降を使用する必要があります。

アプリケーションが OpenID Connect(OIDC)ID プロバイダーから EKS クラスターのユーザーを認証する場合、 PyMongoは AssumeRoleWithWebIdentity リクエストを実行して、アプリケーションの一時的なAmazon Web Services認証情報の OIDC トークンを交換できます。

リクエストによって返された一時的なAWS IAMAssumeRoleWithWebIdentity 認証情報を使用して認証するには、 AWS設定ファイルが環境に存在し、正しく構成されていることを確認します。 AWS構成ファイル の作成および構成方法については、 Boto3 ドキュメントの 「認証情報」 およびAWSドキュメントの 「構成」 を参照してください。

AssumeRoleWithWebIdentityリクエスト用に環境を構成したら、 authMechanism接続オプションを"MONGODB-AWS"に設定します。 このオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)

AssumeRoleWithWebIdentity リクエストを使用してアプリケーションを認証する方法の詳細については、次のAmazon Web Servicesドキュメントを参照してください。

アプリケーションが Elastic Container Service(ECS)コンテナのAmazon Elastic Cloud compute(EC2)インスタンスで実行される場合、 PyMongoは ECS エンドポイントから一時的なAmazon Web Servicesの認証情報を自動的に取得できます。

EC 2インスタンス内から一時認証情報を使用するには、 authMechanism接続オプションを"MONGODB-AWS"に設定します。 このオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)

PyMongo でアプリケーションを認証するの詳細については、次の API ドキュメントを参照してください。

戻る

x.509

項目一覧