認証メカニズム
項目一覧
Overview
このガイドでは、MongoDB Community Edition で利用可能な認証メカニズムの使用方法を説明します。 MongoDB に接続するときに、認証メカニズムを使用してドライバーとサーバーの間で信頼を確立できます。
Tip
LDAP(Lightweight Directory Access Protocol)サーバーを使用して MongoDB を認証する方法については、「エンタープライズ認証メカニズム 」のガイドを参照してください。
MongoDB 配置への接続の詳細については接続ガイド を参照してください。
このガイドでは、次の認証メカニズムについて説明します。
特定の認証メカニズムを選択するには、接続stringのオプションまたは Credential
構造体で、メカニズム、認証情報、およびその他の必要情報を指定します。
このガイドでは、例を使用して、 Credential
構造体で認証を構成する方法を説明します。
認証のための接続 オプションの詳細については、サーバーstring マニュアルの「 接続string URI 形式 」ガイドの「 認証オプション 」 セクションを参照してください。
SCRAM ベースのメカニズム
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
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
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 メカニズム
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
非同期ランタイムを使用しています。
ドライバーは、認証情報が見つかった最初のソースからのみ認証情報を取得します。 ドライバーは、次の順序で次のソースから認証情報を確認します。
Credential
構造体または接続string 。環境変数。
Web ID トークン ファイル
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
環境変数で指定されたAmazon Web Services ECS エンドポイント。Amazon Web Services EC2 エンドポイント。 詳しくは、「 タスクの IAM ロールAmazon Web Services 」を 参照してください。 ( のドキュメント)。
たとえば、Amazon Web Services 接続 でstring の認証情報を指定した場合、ドライバーはそれらの認証情報を使用し、環境変数で指定した認証情報をすべて無視します。
対応する方法でAmazon Web Services IAM 認証情報を設定する方法を示すコードサンプルについては、以下の Credential Struct、Environment Variables、Web Identity Token File タブから選択します。
MONGODB-AWS
認証メカニズムを指定するには、 Credential
構造体のmechanism
フィールドをAuthMechanism::MongoDbAws
に設定します。 この例では、次のプレースホルダーを使用して認証メカニズムを指定します。
access key ID
: Amazon Web ServicesアクセスキーIDsecret access key
: Amazon Web Servicesシークレット アクセスキーdb
: ユーザーに関連付けられている認証データベース
一時的な認証情報を使用している場合は、 Amazon Web Servicesセッション トークンの値を含むドキュメントを作成し、Credential
構造体の mechanism_properties
フィールドをこのドキュメントに設定します。 一時的な認証情報を使用していない場合は、次の例の行9を省略します。
1 let uri = "<connection string>"; 2 let mut client_options = ClientOptions::parse(uri).await?; 3 4 let 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 12 client_options.credential = Some(aws_cred); 13 let 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-X 509メカニズム
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 ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。