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

Amazon Web Services ID とアクセス管理

注意

Amazon Web Services認証はMongoDB 4.4 以降のMongoDB Enterpriseでのみ利用できます。

Amazon Web Services認証メカニズムは、 Amazon Web Services IAM(Identity and Access Management、ID とアクセス管理) とAmazon Web Services Security Token Service(STS) を使用して、 MongoDBデプロイのクライアントの ID を証明します。次の手順は、Amazon Web Services の認証プロセスを説明します。

  1. クライアントはAmazon Web Services IAM 認証情報を使用して、 MongoDBデプロイに送信される署名を作成します。

  2. この配置は、クライアントの署名を使用してリクエストをAmazon Web Services STS に送信します。

  3. リクエストが成功すると、STS は、クライアントの認証情報に対応する IAM ユーザーまたはロールのAmazonリソース名(ARN)を返します。

  4. 配置は返された ARN を使用してユーザーを検索します。クライアントはこのユーザーとして認証されます。

注意

クライアントとサーバーは異なるユーザー名を使用します。クライアントはAmazon Web ServicesアクセスキーIDを使用しますが、サーバーはアクセスキーIDに対応する IAM ユーザーまたはロールの ARN を使用します。

Amazon Web Services の認証情報には、次のコンポーネントが含まれます。

  • アクセスキーID

  • シークレット アクセス キー

  • 任意のセッション トークン

Amazon Web Services IAM 認証情報による認証では、アクセスキーIDとシークレット アクセスキーが使用されます。一時的なAmazon Web Services IAM 認証情報による認証では、3 つのすべてのコンポーネントが使用されます。

注意

ドライバーはネットワーク経由でシークレット アクセス キーまたはセッション トークンを送信しません。

一時的な認証情報は次のアイテムで使用されます。

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

  • <hostname>: MongoDBデプロイのネットワーク アドレス

  • <aws-access-key-id>: Amazon Web ServicesアクセスキーID

  • <aws_secret_access_key>: Amazon Web Servicesシークレット アクセスキー

  • <aws_session_token>: Amazon Web Servicesセッション トークン

次のセクションでは、アプリケーションでAmazon Web Services IAM認証メカニズムを使用する方法について説明します。

クライアントオプションとして、または URI を使用して、通常の(一時的ではない) IAM 認証情報を提供できます。対応する構文を確認するには、Connection String タブまたは Client Optionsタブを選択します。

client = Mongo::Client.new(
'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<host>'],
auth_mech: :aws,
user: '<aws_access_key_id>',
password: '<aws_secret_access_key>')

注意

URI で認証情報を提供する場合は、パーセント エンコードする必要があります。

一時的な認証情報を提供するには、クライアントオプションで、または URI を使用してセッション トークンを指定します。対応する構文を確認するには、Connection String タブまたは Client Optionsタブを選択します。

client = Mongo::Client.new(
'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<<aws_session_token>>')
client = Mongo::Client.new(['<host>'],
auth_mech: :aws,
user: '<aws_access_key_id>',
password: '<aws_secret_access_key>',
auth_mech_properties: {
aws_session_token: '<<aws_session_token>>',
})

クライアントは、環境、または EC2 または ECSメタデータエンドポイントから認証情報を取得できます。認証情報を自動的に検索するには、 Amazon Web Services認証メカニズムを指定しますが、ユーザー名またはパスワードは指定しないでください。 対応する構文を確認するには、Connection String タブまたは Client Optionsタブを選択します。

client = Mongo::Client.new(
'mongodb://host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<hostname>'],
auth_mech: :aws)
)

ドライバーは、指定された順序で次のソースから認証情報を取得しようとします。

  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 環境変数。これらの環境変数は、公式のAmazon Web Services Ruby SDK やAmazon Web Services CLI など、さまざまな Amazon Web Amazon Web Services関連のライブラリとツールによって認識されます。 これらは、 Amazon Web Services Lambda環境で実行中ときにも定義されます。

  • Amazon Web Services STS の AssumeRoleWithWebIdentityアクション。このメカニズムは、サービス アカウント トークンに関連付けられた認証情報を返します。また、次の環境変数を設定する必要があります。

    • AWS_WEB_IDENTITY_TOKEN_FILE: サービス アカウント トークンを含むファイルへのパス。

    • AWS_ROLE_ARN: 呼び出し元が想定しているロールのAmazonリソース名(ARN)。

    • AWS_ROLE_SESSION_NAME (任意): 想定されたロール セッションの識別子。この変数が空の場合、ドライバーはランダムな識別子を生成します。

  • Amazon Web Services ECSタスクメタデータエンドポイント。このエンドポイントは、コンテナに割り当てられた ECSタスクロールに関連付けられた認証情報を返します。

  • Amazon Web Services EC2インスタンスのメタデータエンドポイント。このエンドポイントは、 インスタンスに割り当てられた EC2インスタンスロールに関連付けられた認証情報を返します。

重要

認証情報ソースは、認証情報の完全なセットを提供する必要があります。例、アプリケーションで AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY の環境変数が使用されている場合、これらの変数の 1 つだけが 値を持つ場合、ドライバーはエラーを発生させます。

注意

アプリケーションがEC2インスタンスの ECSコンテナで実行され、コンテナがインスタンスのメタデータへのアクセスを許可されている場合、ドライバーは EC2インスタンスのメタデータエンドポイントからAmazon Web Services の認証情報を検索しようとします。 この方法でドライバーが認証情報を取得した場合、アプリケーションはEC2インスタンスに割り当てられた IAM ロールとして認証できます。

コンテナが EC2インスタンスのメタデータにアクセスしないようにする方法については、Amazon Web Services のドキュメント を参照してください。

このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。

戻る

x.509

項目一覧