Overview
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 認証の使用
Amazon Web Services IAM認証 を使用するには、次の例に示すように、aws
オプションを使用してPyMongo をインストールする必要があります。
python -m pip install pymongo[aws]
PyMongoは、認証情報を処理するためにAmazon Web Services SDK であるPython 3 を使用します。 Boto3 は、次のソースからAmazon Web Servicesの認証情報を登録されている順序で取得しようとします。
MongoClient
コンストラクターまたは接続文字列内のパラメーターに渡される名前付き引数環境変数
共有認証情報ファイル
Amazon Web Services設定ファイル
AssumeRole
Amazon Web Services Security Token Service(STS)へのリクエストAssumeRoleWithWebIdentity
Amazon Web Services STS へのリクエストIAM ロールが設定された Amazon EC 2インスタンスのインスタンス メタデータ サービス
以下のセクションでは、PyMongo を使用してこれらのソースから認証情報を取得し、その認証情報を使用してアプリケーションを認証する方法について説明します。
MongoClient
Credentials
まず、 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
環境変数を、作成したプロファイルの名前に設定します。
Amazon Web Services設定ファイル
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)
AssumeRole リクエスト
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ドキュメントを参照してください。
AssumeRoleWithWebIdentity
重要
アプリケーションでは、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ドキュメントを参照してください。
ECS コンテナまたは EC 2インスタンス
アプリケーションが 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)
API ドキュメント
PyMongo でアプリケーションを認証するの詳細については、次の API ドキュメントを参照してください。