ユーザー、認証および認可
Oracle AI Databaseのセキュリティは、MongoDBのセキュリティとは大きく異なります。Oracle Database API for MongoDBのセキュリティ・モデルについて説明します(様々な操作を実行するためのユーザーの作成、ユーザーの認証およびユーザーの認可)。
MongoDBの場合、デフォルトではユーザー認証および認可チェックが有効になっていません。Oracle AI Databaseでは、常に認証が必要であり、必ず、リクエストした操作の実行を接続ユーザーが認可されていることが確認されます。認証に有効なユーザー名およびパスワードを指定する必要があります。
Oracle Database API for MongoDBでは、認証用に次の接続オプション値のみがサポートされています。
-
オプション
authMechanismのPLAIN値(プレーン・テキスト認証)。特に、SCRAM-SHA-*認証方式はサポートされていません。 -
オプション
authSourceの$external値。(認証方式がPLAINの場合、MongoDBには常にこれが必要です。)
Oracle Database API for MongoDBは、Oracle AI Databaseのユーザー、権限およびロールに依存しています。MongoDBクライアントまたはドライバを使用して、これらのユーザーおよびロールを追加または変更することはできません。かわりに、SQLまたはOracle Database Actionsを使用してこれを実行できます。このAPIを使用するために必要な最小限のOracle AI Databaseロールは、CONNECT、RESOURCEおよびSODA_APPです。
Oracle REST Data Services (ORDS)で使用する場合は、ユーザー(データベース・スキーマ)も有効にする必要があります。これは、PL/SQLプロシージャORDS.enable_schemaを呼び出すか、Oracle AI Database Actionsを使用して実行できます。
MongoDBの場合、"データベース"とはコレクションのセットのことです。MongoDBのためのOracle Database APIの場合、これはOracle AI Databaseのスキーマに相当します。
ノート:
MongoDBのためのOracle APIを使用して"データベース"を削除しても、基礎となるデータベース・スキーマは削除されません。かわりに、スキーマ内のすべてのコレクションを削除します。
管理ユーザーは、SQLを使用してスキーマを削除できます(たとえば、Autonomous Oracle AI DatabaseとともにDatabase Actionsを使用)。
APIの場合、ユーザー名はデータベース・スキーマ名である必要があります。この名前は大文字と小文字が区別されず、英字以外の文字(数字を含む)で開始できず、セキュアなパスワードを指定する必要があります。
APIのユーザーは、通常、そのスキーマ(ユーザー名はスキーマ名です)内でのみ操作を実行できます。このような操作の例として、新しいコレクションの作成、ドキュメントの読取りと書込み、索引の作成などがあります。
管理ユーザーが存在しないデータベース・スキーマ(ユーザー)にデータを挿入しようとすると、そのスキーマはスキーマ専用アカウントとして自動的に作成されます。つまり、パスワードがなく、ログインできません。新しいスキーマには、SODA_APP、CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE SEQUENCE、CREATE PROCEDUREおよびCREATE JOBの権限が付与されます。また、スキーマには無制限の表領域割当て容量も与えられ、Oracle REST Data Services (ORDS)を使用できるようになります。
APIの通常ユーザーの場合、現在のMongoDBデータベースを別のデータベースに切り替えるMongoDBシェル・コマンド( use <database>など)は通常サポートされていません。別のデータベース・スキーマに切り替えると、エラーが発生します。
ただし、管理ユーザー (CREATE USER、ALTER USER、DROP USERのすべての権限を持つユーザー)は、新規ユーザー(データベース・スキーマ)を作成し、任意のユーザーとして任意のスキーマにアクセスできます。
管理ユーザーは、次の操作を実行できます。
-
他のユーザーのスキーマを使用します。
現在のユーザー以外のスキーマにアクセスする場合にプロキシ接続を使用できます。たとえば、管理ユーザーとして接続しているユーザーは、
other_userとして直接接続する場合と同じロールと権限を使用して、スキーマother_userで操作を実行できます。 -
新規ユーザー(スキーマ)を作成します。
たとえば、まだ存在しないスキーマ
totoに管理ユーザーがコレクションを作成しようとすると、そのスキーマ(ユーザー)が自動的に作成されます。
管理ユーザーの使用を本番アプリケーションでは許可しないことをお薦めします。かわりに、アプリケーションには通常のユーザーとして、最小限の権限で接続してください。特に、特定のスキーマ(ユーザー)に固有のMongoClientを使用して、データベースにアプリケーションを接続します。
関連項目:
-
Oracle Autonomous AI Database Serverlessの使用のAutonomous Databaseでのユーザーの作成
-
Oracle Autonomous AI Database Serverlessの使用のAutonomous Databaseでのユーザー・ロールおよび権限の管理
-
SQLを使用してデータベース・スキーマ(データベース・ユーザーとも呼ばれる)を作成する方法については、『Oracle AI Database SQL言語リファレンス』のCREATE USER
-
SQLを使用してロールをデータベース・スキーマに付与する方法については、『Oracle AI Database SQL言語リファレンス』のGRANT
-
MongoDBのためのOracle Database APIとのAutonomous Database (Autonomous JSON Databaseを含む)の使用については、Oracle Autonomous AI Database Serverlessの使用のMongoDBのためのOracle Database APIの使用。ここでは、セキュリティや接続など、APIで使用するためのデータベースの構成について説明します。
-
ORDSでのデータベース・スキーマの有効化については、『Oracle REST Data Services開発者ガイド』のORDS.ENABLE_SCHEMAを参照してください