認証メカニズム
Overview
このガイドでは、MongoDB Community Edition で利用可能な認証メカニズムを使用して、MongoDB で 認証する 方法を学びます。 認証メカニズムは、ドライバーとサーバーが接続前にクライアントの ID を確認し、セキュリティを確保するためのプロセスです。
MongoDB Community Edition の最新バージョンでは、次の認証メカニズムを使用できます。
GSSAPI/Kerberos
またはLDAP
を使用して認証するには、 エンタープライズ認証メカニズムの基礎ページを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、接続ガイド を参照してください。
認証メカニズムを指定する
次のいずれかの方法を使用して、MongoDB に接続するときに認証メカニズムと認証情報を指定できます。
接続string ( 接続 URI とも呼ばれます)は、string MongoDB配置に接続する方法と接続中の動作をドライバーに指示する です。
サポートされている認証メカニズムのファクトリー メソッドで、
MongoCredential
クラスに含まれています。
メカニズム
次の例には、次のプレースホルダーを使用するコード例が含まれています。
<db_username>
- MongoDB ユーザー名。<db_password>
- MongoDB ユーザーのパスワード。<hostname>
- クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。<port>
- MongoDB サーバーのポート番号。<authenticationDb>
- ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadmin
を使用します。
default
デフォルトの認証メカニズム設定では、サーバーがサポートする MongoDB のバージョンに応じて、次のいずれかの認証メカニズムが使用されます。
SCRAM-SHA-256
SCRAM-SHA-1
MONGODB-CR
注意
MongoDB バージョン 4.0 では、デフォルトのメカニズムとして SCRAM が使用され、 MONGODB-CR
のサポートはサポートされなくなりました。
デフォルトの認証メカニズムを指定するための対応構文を確認するには、 タブまたは タブを選択します。Connection StringMongoCredential
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
var credential = MongoCredential.CreateCredential("<authenticationDb>", "<db_username>", "<db_password>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
SCRAM-SHA-256
SCRAM-SHA-256
は、 SHA-256
アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response 認証メカニズム(SCRAM)です。
次のように、接続stringで SCRAM-SHA-256
認証メカニズムを指定できます。
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");
Tip
デフォルトのメカニズム
MongoDB バージョン 4.0 以降では、MongoDB サーバーのバージョンでサポートされている場合、デフォルトの認証メカニズムとしてSCRAM-SHA-256
が使用されます。
デフォルト メカニズムの指定の詳細については、「デフォルト 」を参照してください。
SCRAM-SHA-1
SCRAM-SHA-1
は、 SHA-1
アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response Authentication Mechanism(SCRAM)です。
次のように、接続stringで SCRAM-SHA-1
認証メカニズムを指定できます。
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");
Tip
デフォルトのメカニズム
MongoDB バージョン 4.0 では、サーバーがSCRAM-SHA-256
をサポートしていない場合、デフォルトの認証メカニズムとしてSCRAM-SHA-1
が使用されます。
デフォルト メカニズムの指定の詳細については、「デフォルト 」を参照してください。
MongoDB-AWS
注意
MONGODB-AWS
認証メカニズムは、MongoDB Atlas の MongoDB 配置でのみ使用できます。
MONGODB-AWS
認証メカニズムは、 Amazon Web Services Identity and Access Management( Amazon Web Services IAM)認証情報を使用してユーザーを認証します。 認証情報を明示的に指定することも、外部ソースから自動的に認証情報を取得するようにドライバーに指示することもできます。
次のセクションには、次のプレースホルダーを使用するコード例が含まれています。
<awsKeyId>
- Amazon Web ServicesアクセスキーIDの値<awsSecretKey>
- Amazon Web Servicesシークレット アクセス キーの値<awsSessionToken>
- Amazon Web Servicesセッション トークンの値
Tip
IAM MongoDB Atlasを使用してAmazon Web Services を構成する方法の詳細については、「Amazon Web Services IAM ロールを使用したパスワードレス認証の設定 」 を参照してください。
Amazon Web Services IAM 認証情報の指定
Amazon Web ServicesMongoClientSettings
オブジェクトを使用するか、MongoCredential
接続 の一部として、 オブジェクトで IAMstring 認証情報を提供できます。認証情報を指定するための対応する構文を確認するには、 タブまたは タブを選択します。Connection StringMongoCredential
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
Amazon Web Servicesセッション トークンを使用している場合は、次に示すように接続stringに authMechanismProperties
パラメーターを含めます。
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]"); mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")); var client = new MongoClient(mongoClientSettings);
Amazon Web Servicesセッション トークンを使用している場合は、次に示すように、MongoCredential
オブジェクトで WithMechanismProperty()
メソッドを呼び出します。
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")) .WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
認証情報の自動取得
MongoClientSettings
でAmazon Web Services IAM 認証情報を指定する代わりに、 .NET / C#ドライバーにAmazon Web Services SDK を使用して外部ソースから認証情報を自動的に取得するように指示できます。 ドライバーに認証情報を取得するよう指示するには、次のアクションを実行します。
認証メカニズムとして
MONGODB-AWS
を指定認証ソースが MongoDB の外部であることを指定する
適切な場所で認証情報を設定する
認証メカニズムとソースは、MongoCredential
オブジェクトを使用するか、 接続stringの一部として指定できます。 タブまたは Connection StringMongoCredentialタブを選択すると、 認証メカニズムと外部認証ソースを指定するための対応する構文が表示されます。MONGODB-AWS
var connectionString = "mongodb+srv://<hostname>[:<port>]?authMechanism=MONGODB-AWS&authSource=$external"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]"); mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence()); var client = new MongoClient(mongoClientSettings);
認証メカニズムとソースを指定した後、認証情報のタイプに適したロケーションに認証情報を設定する必要があります。 .NET/C# ドライバーは、ここに記載されている順序で次のロケーションで認証情報をチェックします。
Web ID プロバイダー
共有Amazon Web Services認証情報ファイル
環境変数
ECS コンテナの認証情報
EC2 コンテナの認証情報
OpenID Connect(OIDC)互換のWeb ID プロバイダーを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。 Web ID プロバイダーを使用するには、OIDC トークンを含む ファイルを作成し、次の例に示すように、 bash
または同様の shell を使用して 環境変数にこのファイルへの絶対パスを設定します。
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
共有Amazon Web Services 認証情報ファイル のプロファイルを使用して認証するには、テキストエディタ、 用のAmazon Web Services SDK、または.NET Amazon Web ServicesCLIを使用して適切な認証情報ファイルを作成します。
環境変数から認証情報を直接取得するには、 bash
または同様の shell を使用して次の環境変数を設定します。
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
注意
そのロールにAmazon Web Servicesのセッショントークンが必要ない場合は、AWS_SESSION_TOKEN
を含む行を省略します。
ECS コンテナの認証情報を使用して認証するには、 bash
または同様の shell を使用して、環境変数に ECS エンドポイントの URI を設定します。 対応する環境変数を指定するための構文を確認するには、 タブまたは タブを選択します。Full ECS URIRelative ECS URI
export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>
EC2 コンテナの認証情報を使用して認証するには、前述の環境変数が設定されていないことを確認してください。 ドライバーは、デフォルトの IPv4 EC2 インスタンスのメタデータ エンドポイントから認証情報を取得します。
x.509
X.509
認証メカニズムは、TLS とX.509
証明書を使用して、クライアント証明書の識別名で識別されるユーザーを認証します。X.509
認証メカニズムを指定すると、サーバーはクライアント証明書のサブジェクト名を使用して接続を認証します。
TLS/SSL の使用について詳しくは、 TLS/SSL ガイド を参照してください。
X.509
証明書の詳細については、 X. 509サーバー マニュアル エントリを参照してください。
Connection StringタブまたはMongoCredentialタブを選択すると、 X.509
認証メカニズムを指定するための対応する構文が表示されます。
var connectionString = "mongodb://<hostname>/?authMechanism=MONGODB-X509"; var settings = MongoClientSettings.FromConnectionString(connectionString); settings.useTls = true; settings.SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") } };
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>") var settings = new MongoClientSettings { Credential = credential SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") }, }, UseTls = true, Server = new MongoServerAddress("<hostname", "<port>"), };
Tip
Username parameter
CreateMongoX509Credential
に提供されるユーザー名パラメータは、 X.509
証明書の識別サブジェクト名と完全に一致する必要があります。 あるいは、パラメータとしてnull
を渡して、MongoDB サーバーにX.509
証明書に基づいてユーザー名を推測するよう促すこともできます。
注意
Windows を使用している場合、ドライバーがメモリ内に作成されたX.509
認証証明書を見つけられない可能性があります。 この問題の潜在的な解決策の詳細については、接続トラブルシューティング ガイドのX. 509認証情報エラーセクションを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。