Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Go Driver
/

認証メカニズム

このガイドでは、MongoDB コミュニティ エディション で利用可能な各認証メカニズムの使用方法を説明します。MongoDB は認証メカニズムを使用して ID を確認し、信頼を確立して、接続前にドライバーとサーバーのセキュリティを確保します。

GSSAPI/KerberosまたはLDAPを使用して認証するには、 エンタープライズ認証メカニズムの基礎ページを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、「接続ガイド 」を参照してください。

Go Driver は次の認証メカニズムをサポートしています。

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • x.509

Go Driver は、Client クライアント タイプから認証メカニズムへの接続を確立します。 タイプは、接続オプションとして使用するメカニズムと認証情報を 認証情報 タイプ で指定します。これらのオプションを構成するには、Credential タイプを ClientOptions タイプの SetAuth() に渡します。

次のセクションでは、MongoDB コミュニティ エディション がサポートする 5 つのメカニズムを使用して、このプロセスを示します。

各認証メカニズムには、次のプレースホルダーが含まれています。

  • username - MongoDB のユーザー名

  • password - MongoDB ユーザーのパスワード

  • hostname - クライアントからアクセス可能な MongoDB Server のネットワーク アドレス

  • port - MongoDB Server のポート番号

  • authenticationDb - ユーザーの認証データを含む MongoDB database。このオプションを省略すると、ドライバーはデフォルト値の admin を使用します。

デフォルトでは、サーバーがサポートする MongoDB のバージョンに応じて、次のいずれかの認証メカニズムが使用されます。

メカニズム
バージョン

SCRAM-SHA-256

MongoDB 4.0 以降

SCRAM-SHA-1

MongoDB 3.0、3.2、3.4、3.6

MONGODB-CR

MongoDB 2.6 以前

デフォルトの認証メカニズムを指定するには、AuthMechanism オプションを省略します。

credential := options.Credential{
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

MongoDB がサポートするチャレンジ レスポンス(CR)および Salted Challenge Response 認証メカニズム(SCRAM)の詳細については、サーバー マニュアルの「SCRAM」セクションを参照してください。

重要

SCRAM-SHA-256 は、MongoDB 4.0 以降の MongoDB のデフォルトの認証方法です。

SCRAM-SHA-256 は、 SHA-256アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response 認証メカニズム(SCRAM)です。

SCRAM-SHA-256 認証メカニズムを指定するには、AuthMechanism オプションに "SCRAM-SHA-256" という値を割り当てます。

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-256",
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

重要

SCRAM-SHA-1 は、MongoDB バージョン 3.0、3.2、3.4、および 3.6 のデフォルトの認証方法です。

SCRAM-SHA-1 は、SHA-1 アルゴリズムを使用して暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response Authentication Mechanism(SCRAM)です。

SCRAM-SHA-1 認証メカニズムを指定するには、AuthMechanism オプションに "SCRAM-SHA-1" という値を割り当てます。

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-1",
AuthSource: "<authenticationDb>",
Username: "<username>",
Password: "<password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

MONGODB-CR ユーザー名とパスワードを使用してユーザーを認証するチャレンジレスポンスタイプの認証メカニズムです。

重要

この認証メカニズムは MongoDB 3.6 以降、非推奨となり、MongoDB 4.0 ではサポートされなくなりました。

重要

MONGODB-AWS 認証メカニズムは、MongoDB バージョン 4.4 以降でのみ使用できます。

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

MONGODB-AWS 認証が有効な状態の MongoDB インスタンスに接続するには、MONGODB-AWS認証メカニズムを指定します。

ドライバーは、次のソースの認証情報を登録されている順序でチェックします。

  1. 接続文字列。

  2. 環境変数。

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

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

  5. AWS EC2 エンドポイント。詳細については、 AWSドキュメントの「 タスクの IAM ロール 」を参照してください。

重要

ドライバーは、認証情報が見つかった最初のソースからのみ認証情報を取得します。例、接続文字列でAmazon Web Services の認証情報を指定すると、ドライバーは環境変数で指定した認証情報を無視します。

Tip

次の例では、SetAuth() メソッドを使用して適切な資格情報を設定します。ApplyURI() メソッドを使用してこれらの資格情報を指定することもできます。ApplyURI() メソッドを使用する場合は、ユーザー名とパスワードが正しく解析されるように URL エンコードする必要があります。

AWS IAM 認証情報を使用して MongoDB インスタンスに接続するには、次の手順を実行します。

  • AuthMechanism オプションに MONGODB-AWS という値を割り当てます

  • Username オプションに accessKeyID の値を割り当てます

  • Password オプションに secretAccessKey の値を割り当てます

var accessKeyID, secretAccessKey string
awsCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
}
awsIAMClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(awsCredential))
if err != nil {
panic(err)
}
_ = awsIAMClient

AWSセッショントークンを指定する必要がある場合は、 assume ロールリクエストから返された一時的な認証情報を使用します。

一時的な認証情報を使用するには、次のように sessionToken の値を AuthMechanismProperties オプションに割り当てます。

var accessKeyID, secretAccessKey, sessionToken string
assumeRoleCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
AuthMechanismProperties: map[string]string{
"AWS_SESSION_TOKEN": "<sessionToken>",
},
}
assumeRoleClient, err := mongo.Connect(context.TODO(),
options.Client().SetAuth(assumeRoleCredential))

環境変数に保存されている AWS 認証情報を使用して MongoDB インスタンスに対して認証するには、shell を使用して次のように変数を設定します。

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

注意

認証するロールに AWS セッショントークンが必要ない場合は、AWS_SESSION_TOKEN を含む行を省略します。

上記の環境変数を設定したら、以下に例示するとおり MONGODB-AWS 認証メカニズムを指定します。

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

Web IDP から取得した OpenID Connect(OIDC)トークンを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。OIDC トークンを使用するには、トークンを含むファイルを作成するか、既存のファイルを見つけます。次に、以下の環境変数を設定してください。

  • AWS_WEB_IDENTITY_TOKEN_FILE: OIDC トークンを含むファイルの絶対パスに設定します。

  • AWS_ROLE_ARN: クラスターへの接続に使用される IAM ロールに設定します。例: arn:aws:iam::111122223333:role/my-role

次のシェルコマンドは、これらの環境変数を設定します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file that contains OIDC token>
export AWS_ROLE_ARN=<IAM role name>

以下の環境変数を設定した後、次の例に示すように MONGODB-AWS 認証メカニズムを指定します。

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

X.509 認証メカニズムでは TLS を X.509 証明書と併用して、クライアント証明書の相対的識別名(RDN)によって識別されるユーザーを認証します。X.509 認証メカニズムを指定すると、サーバーは次のファイルのパスを使用して接続を認証します。

  • tlsCAFile 。TLS 接続時に、信頼する単一の証明書機関または複数の証明書機関のバンドルのいずれかを含みます。

  • tlsCertificateKeyFile 。クライアント証明書ファイルまたはクライアント秘密キー ファイルへのパスを参照します。

X.509 認証メカニズムを指定するには、次の手順を実行します。

  • tlsCAFile に接続文字列内のファイルへのパスを割り当てます。

  • tlsCertificateKeyFile に接続文字列内のファイルへのパスを割り当てます。

  • AuthMechanism オプションに "MONGODB-X509" という値を割り当てます

caFilePath := "<cafile_path>"
certificateKeyFilePath := "<client_certificate_path>"
uri := "mongodb://<hostname>:<port>/?tlsCAFile=%s&tlsCertificateKeyFile=%s"
uri = fmt.Sprintf(uri, caFilePath, certificateKeyFilePath)
credential := options.Credential{
AuthMechanism: "MONGODB-X509",
}
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)

戻る

Context

項目一覧