Overview
このガイドでは、MongoDB Enterprise Edition で利用可能な認証メカニズムを使用して、MongoDB で認証する方法を学習できます。 認証メカニズムは、ドライバーとサーバーが接続前にクライアントの ID を確認し、セキュリティを確保するためのプロセスです。
MongoDB Enterprise Edition の最新バージョンでは、次の認証メカニズムを使用できます。
別のメカニズムを使用して認証するには、 認証メカニズムの基礎ページを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、「接続ガイド 」を参照してください。
次の方法で MongoDB に接続するときに、認証メカニズムと認証情報を指定できます。
接続string URIを使用します。 エンタープライズ認証で接続string URI を使用する方法の詳細については、 接続文字列 URI に関するstringマニュアルのエントリを参照してください。
Credential
タイプで認証情報と認証メカニズムを指定します。
GSSAPI/Kerberos への認証
ジェネリック セキュリティ サービス API(GSSAPI)認証メカニズムにより、ユーザーはユーザーのプリンシパルを使用して Kerberos サービスへの認証を行えます。
ビルドgssapi
タグ を使用する必要があります および cgo サポート を指定します Kerberos 認証を使用するコンパイル中に。cgo
サポートは、以前に環境変数を別のプラットフォームにクロスコンパイルしない限り、デフォルトで有効になっています。 gssapi
ビルド タグを使用するには、次のコマンドでコードをコンパイルします。
go build -tags gssapi
例
この例では、次のプレースホルダーを使用して認証メカニズムを指定します。
username
: Kerberos プリンシパル。 サンプル ユーザー名はmyuser@KERBEROS.EXAMPLE.COM
です。password
: Kerberos ユーザーのパスワード。 コード内でパスワードが公開されないように、keytab
ファイルにパスワードを保存することもできます。connection uri
: 接続string URI。
次のコードは、Kerberos で認証し、認証設定を持つクライアントを作成するためのCredential
構造体を定義する方法を示しています。
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<username>", Password: "<password>", PasswordSet: true, } uri := "<connection uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(context.TODO(), clientOpts)
認証キーをkeytab
ファイルに保存する場合は、 Credential
構造体でパスワードやPasswordSet
フィールドを定義する必要はありません。 kinit
バイナリを使用して、Kerberos プリンシパルを認証するための認証情報キャッシュを初期化できます。 kinit
バイナリの詳細については、 Oracle のドキュメントを参照してください。
次のコマンドは、サンプル ユーザー名の認証情報キャッシュを呼び出す方法を示しています。
kinit myuser@KERBEROS.EXAMPLE.COM
あるいは、 URL エンコードされ た接続string URI を使用して認証することもできますKerberos プリンシパル、パスワード、 ( サーバーのネットワーク アドレス)hostname
MongoDB
uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=GSSAPI"
カスタムSERVICE_NAME
フィールドと フィールドを設定するSERVICE_REALM
Credential
構造体のAuthMechanismProperties
フィールドを使用して、認証メカニズムに追加のプロパティを指定できます。 Kerberosのデフォルトのサービス名は「 MongoDB 」です。 SERVICE_NAME
SERVICE_REALM
次のコードは、Credential
構造体を定義するときに、 フィールドと フィールドにカスタム値を設定する方法を示しています。
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<username>", Password: "<password>", AuthMechanismProperties: map[string]string{ "SERVICE_REALM": "<Kerberos service realm>", "SERVICE_NAME": "<service name>", }, }
追加のプロパティについては、認証プロパティ に関するサーバー マニュアルのエントリを参照してください。
LDAP(PLAIN)への認証
ディレクトリ サーバーのユーザー名とパスワードを使用して、LDAP(Lightweight Directory Access Protocol)サーバーで認証できます。
警告
この認証メカニズムはパスワードをプレーンテキストでサーバーに送信するため、このメカニズムは TLS 接続でのみ使用してください。
例
この例では、次のプレースホルダーを使用して認証メカニズムを指定します。
username
: LDAP ユーザー名password
: LDAP パスワードconnection uri
: 接続string URI
次のコードは、LDAP で認証し、認証設定を持つクライアントを作成するためのCredential
構造体を定義する方法を示しています。
credential := options.Credential{ AuthMechanism: "PLAIN", Username: "<username>", Password: "<password>", } uri := "<connection uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(context.TODO(), clientOpts)
あるいは、接続string URI を使用して認証することもできます。これには、 LDAPユーザー名とパスワード、hostname
としてMongoDBサーバーのネットワーク アドレスを指定します。
uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=PLAIN"
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。
API ドキュメント
Credentials type
SetAuth() メソッド