Docs Menu

認証メカニズム

このガイドでは、MongoDB Community Edition で利用可能な認証メカニズムの使用方法を説明します。 MongoDB に接続するときに、認証メカニズムを使用してドライバーとサーバーの間で信頼を確立できます。

Tip

LDAP(Lightweight Directory Access Protocol)サーバーを使用して MongoDB を認証する方法については、「エンタープライズ認証メカニズム 」のガイドを参照してください。

MongoDB 配置への接続の詳細については接続ガイド を参照してください。

このガイドでは、次の認証メカニズムについて説明します。

特定の認証メカニズムを選択するには、接続stringのオプションまたは Credential 構造体で、メカニズム、認証情報、およびその他の必要情報を指定します。

このガイドでは、例を使用して、 Credential構造体で認証を構成する方法を説明します。

認証のための接続 オプションの詳細については、サーバーstring マニュアルの「 接続string URI 形式 」ガイドの「 認証オプション 」 セクションを参照してください。

SCRAM(Salted Challenge Response Authentication Mechanism) とは、サーバーへの認証にユーザー名とパスワードを使用する認証メカニズムのグループを指します。

MongoDB は次の SCRAM ベースの認証メカニズムをサポートしています。

  • SCRAM-SHA- 256 : SHA-256アルゴリズムで暗号化されたデータベースのユーザー名とパスワードを使用する認証メカニズム

  • SCRAM-SHA- 1 : SHA-1アルゴリズムで暗号化されたデータベースのユーザー名とパスワードを使用する認証メカニズム

重要

デフォルトの認証メカニズム

認証メカニズムを指定しない場合、サーバーはデフォルトの認証メカニズムである SCRAM ベースのメカニズムで、接続しているサーバーのバージョンによって異なるメカニズムを使用して認証情報を検証しようとします。

SCRAM-SHA-256メカニズムは、MongoDB Server バージョン 4.0 以降のデフォルトの認証メカニズムです。

デフォルトの認証メカニズムを使用するには、 Credential構造体をインスタンス化するときにmechanismフィールドのみを省略します。 この例では、次のプレースホルダーを使用します。

  • db_username : データベースのユーザー名

  • db_password : データベースのパスワード

  • db : ユーザーに関連付けられている認証データベース

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let default_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.source("<db>".to_string())
.build();
client_options.credential = Some(default_cred);
let client = Client::with_options(client_options)?;

SCRAM-SHA-256認証メカニズムを指定するには、 Credential構造体のmechanismフィールドをAuthMechanism::ScramSha256に設定します。 この例では、次のプレースホルダーを使用して認証メカニズムを指定します。

  • db_username : データベースのユーザー名

  • db_password : データベースのパスワード

  • db : ユーザーに関連付けられている認証データベース

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let scram_sha_256_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.mechanism(AuthMechanism::ScramSha256)
.source("<db>".to_string())
.build();
client_options.credential = Some(scram_sha_256_cred);
let client = Client::with_options(client_options)?;

SCRAM-SHA-1認証メカニズムを指定するには、 Credential構造体のmechanismフィールドをAuthMechanism::ScramSha1に設定します。 この例では、次のプレースホルダーを使用して認証メカニズムを指定します。

  • db_username : データベースのユーザー名

  • db_password : データベースのパスワード

  • db : ユーザーに関連付けられている認証データベース

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let scram_sha_1_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.mechanism(AuthMechanism::ScramSha1)
.source("<db>".to_string())
.build();
client_options.credential = Some(scram_sha_1_cred);
let client = Client::with_options(client_options)?;

MONGODB-AWS 認証メカニズムは、Amazon Web Services Identity and Access Management(AWS IAM)認証情報を使用してユーザーを認証します。

この認証メカニズムを使用するには、プロジェクトのCargo.tomlファイルでmongodb依存関係にaws-auth機能フラグを追加する必要があります。 以下は、 MONGODB-AWS認証メカニズムを有効にするためにmongodb依存関係機能リストに含める必要があるものの例を示しています。

[dependencies.mongodb]
version = "3.2.3"
features = [ "aws-auth", ... ]

重要

Rust ドライバーでMONGODB-AWS認証メカニズムを使用するには、アプリケーションが次の要件を満たしている必要があります。

  • MongoDB Server バージョン4.4以降に接続している場合

  • tokio非同期ランタイムを使用しています。

ドライバーは、認証情報が見つかった最初のソースからのみ認証情報を取得します。 ドライバーは、次の順序で次のソースから認証情報を確認します。

  1. Credential 構造体または接続string 。

  2. 環境変数。

  3. Web ID トークン ファイル

  4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 環境変数で指定されたAmazon Web Services ECS エンドポイント。

  5. Amazon Web Services EC2 エンドポイント。 詳しくは、「 タスクの IAM ロールAmazon Web Services 」を 参照してください。 ( のドキュメント)。

たとえば、Amazon Web Services 接続 でstring の認証情報を指定した場合、ドライバーはそれらの認証情報を使用し、環境変数で指定した認証情報をすべて無視します。

対応する方法でAmazon Web Services IAM 認証情報を設定する方法を示すコードサンプルについては、以下の Credential StructEnvironment VariablesWeb Identity Token File タブから選択します。

MONGODB-AWS認証メカニズムを指定するには、 Credential構造体のmechanismフィールドをAuthMechanism::MongoDbAwsに設定します。 この例では、次のプレースホルダーを使用して認証メカニズムを指定します。

  • access key ID: Amazon Web ServicesアクセスキーID

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

  • db : ユーザーに関連付けられている認証データベース

一時的な認証情報を使用している場合は、 Amazon Web Servicesセッション トークンの値を含むドキュメントを作成し、Credential 構造体の mechanism_properties フィールドをこのドキュメントに設定します。 一時的な認証情報を使用していない場合は、次の例の行9を省略します。

1let uri = "<connection string>";
2let mut client_options = ClientOptions::parse(uri).await?;
3
4let aws_cred = Credential::builder()
5 .username("<access key ID>".to_string())
6 .password("<secret access key>".to_string())
7 .source("<db>".to_string())
8 .mechanism(AuthMechanism::MongoDbAws)
9 .mechanism_properties(doc!("AWS_SESSION_TOKEN": "<session token>"))
10 .build();
11
12client_options.credential = Some(aws_cred);
13let client = Client::with_options(client_options)?;

Tip

セキュリティ トークン サービス(STS)の 引き受けロール リクエストから、一時的なAmazon Web Services IAM 認証情報を取得できます。 このプロセスの詳細については、 AssumeRoleAmazon Web Services のドキュメント を参照してください。

Amazon Web Servicesの認証情報を環境変数に保存するには、 shellで次のコマンドを実行します。

export AWS_ACCESS_KEY_ID=<access key ID>
export AWS_SECRET_ACCESS_KEY=<secret access key>
export AWS_SESSION_TOKEN=<session token>

Amazon Web Servicesセッション トークンを使用していない場合は、AWS_SESSION_TOKEN 環境変数を設定する行を省略します。

Credential構造体のmechanismオプションをAuthMechanism::MongoDbAwsに設定します。 ドライバーは、環境変数からAmazon Web Services IAM 認証情報を読み取ります。 次のコードは、 Amazon Web Services認証が指定された Credential 構造体を定義し、 MongoDBに接続する方法を示しています。

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build();
client_options.credential = Some(aws_cred);
let client = Client::with_options(client_options)?;

Web IDP から取得した OpenID Connect(OIDC)トークンを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。 OIDC トークンを使用するには、トークンを含む ファイルを作成し、次の shell コマンドに示すようにトークン ファイルへの絶対パスである値を持つ環境変数を定義します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to OIDC token file>

Credential構造体のmechanismオプションをAuthMechanism::MongoDbAwsに設定します。 ドライバーは、トークン ファイルからAmazon Web Services IAM 認証情報を読み取ります。 次のコードは、 Amazon Web Services認証が指定された Credential 構造体を定義し、 MongoDBに接続する方法を示しています。

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build();
client_options.credential = Some(aws_cred);
let client = Client::with_options(client_options)?;

MONGODB-X509認証メカニズムでは、X. 509証明書とともにトランスポート レベル セキュリティ(TLS)を使用して、クライアント証明書の相対的識別名(RDN)によって識別されるユーザーを認証します。

この認証メカニズムを指定する場合は、次のファイルを提供する必要があります。

  • TLS 接続を行う際に信頼する 1 つ以上の証明書機関を含む 認証局(CA)ファイル。サーバーに接続する前に、ドライバーはこのファイルを使用して、サーバーの証明書が指定された証明機関のいずれかであることを確認します。

  • クライアント証明書と秘密キーを含む 証明書鍵ファイル。ドライバーはこのファイルをサーバーに提示して、クライアントを確認します。

Tip

X.509 証明書の詳細については、 MongoDB Serverマニュアルの x.509 を参照してください。

MONGODB-X509認証メカニズムを指定するには、 Credential構造体のmechanismフィールドをAuthMechanism::MongoDbX509に設定します。 この例では、次のプレースホルダーを使用して認証メカニズムを指定します。

  • path to CA certificate : CA ファイルのファイルパス

  • path to private client key : 証明書鍵ファイルのファイルパス

  • password for client key:クライアントキーの復号に使用されるパスワード

  • db : ユーザーに関連付けられている認証データベース

次のコードは、 接続stringで証明書を参照し、MONGODB-X509 認証メカニズムを指定して、 MongoDBに接続する方法を示しています。

let uri = format!(
"mongodb://<hostname>:<port>/?tlsCAFile={tlsCAFile}\
&tlsCertificateKeyFile={tlsCertificateKeyFile}\
&tlsCertificateKeyFilePassword={tlsCertificateKeyFilePassword}",
tlsCAFile = "<path to CA certificate>",
tlsCertificateKeyFile = "<path to private client key>",
tlsCertificateKeyFilePassword = "<password for client key>"
);
let mut client_options = ClientOptions::parse(uri).await?;
let x509_cred = Credential::builder().mechanism(AuthMechanism::MongoDbX509).build();
client_options.credential = Some(x509_cred);
let client = Client::with_options(client_options)?;

Tip

接続で TLS を有効にする方法の詳細については、「 TLS の有効化と構成 」ガイドを参照してください。

MongoDB への認証の詳細については、サーバー マニュアルの認証を参照してください。

MongoDB 配置のユーザー管理の詳細については、サーバー マニュアルの「ユーザー」を参照してください。

このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。