認証メカニズム
Overview
このガイドでは、MongoDB コミュニティ エディション で利用可能な各認証メカニズムの使用方法を説明します。MongoDB は認証メカニズムを使用して ID を確認し、信頼を確立して、接続前にドライバーとサーバーのセキュリティを確保します。
GSSAPI/Kerberos
またはLDAP
を使用して認証するには、 エンタープライズ認証メカニズムの基礎ページを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、「接続ガイド 」を参照してください。
サポートされているメカニズム
Go Driver は次の認証メカニズムをサポートしています。
Go Driver は、クライアントタイプから認証メカニズムへの接続を確立します。Client
タイプは、接続オプションとして使用するメカニズムと認証情報を認証情報 タイプで指定します。これらのオプションを構成するには、Credential
タイプを ClientOptions タイプの SetAuth() に渡します。
次のセクションでは、MongoDB コミュニティ エディション がサポートする 5 つのメカニズムを使用して、このプロセスを示します。
規則の例
各認証メカニズムには、次のプレースホルダーが含まれています。
username
- MongoDB のユーザー名password
- MongoDB ユーザーのパスワードhostname
- クライアントからアクセス可能な MongoDB Server のネットワーク アドレスport
- MongoDB Server のポート番号authenticationDb
- ユーザーの認証データを含む MongoDB database。このオプションを省略すると、ドライバーはデフォルト値のadmin
を使用します。
default
デフォルトでは、サーバーがサポートする 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
重要
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
重要
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-CR
ユーザー名とパスワードを使用してユーザーを認証するチャレンジレスポンスタイプの認証メカニズムです。
重要
この認証メカニズムは MongoDB 3.6 以降、非推奨となり、MongoDB 4.0 ではサポートされなくなりました。
MONGODB-AWS
重要
MONGODB-AWS 認証メカニズムは、MongoDB バージョン4.4以降でのみ使用できます。
MONGODB-AWS
認証メカニズムは、Amazon Web Services Identity and Access Management(AWS IAM)認証情報を使用してユーザーを認証します。
MONGODB-AWS
認証メカニズムを指定するには、次の手順を実行します。
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
Amazon Web Servicesセッショントークンを指定する必要がある場合は、 assume ロール リクエスト から返された一時的な認証情報を使用します。
一時的な認証情報を使用するには、 AuthMechanismProperties
オプションにsessionToken
の値を割り当てます。
var 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))
X.509
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)