はじめに
Oracle Autonomous Database - Shared (ADB-S) と OCI IAM の統合によって可能になったことに、Oracle Cloud Infrastructure Identity and Access Management(IAM)の認証と認可を使用するようにAutonomous Databaseを構成して、IAMユーザーがIAM資格情報を使用してAutonomous Databaseにアクセスできるようにすることができます。
この機能の活用で以下のようなメリットがあります。
- 管理者は、ユーザーが組織に参加したり、役割を変更したり、組織を離れたりする際に、各データベースに個別に変更を加えることなく、すべてのADB-Sユーザーを一元的に管理できるようになりました。
- データベースユーザーは、データベースごとに異なるパスワードを覚えて使用する代わりに、単一のIAMデータベース証明書を使用してログインすることができます。
IAMでは、ユーザとデータベーススキーマのマッピングとデータベースの認証を一元化しています。
データベーススキーマは、IAMユーザ、または特定のIAMグループに属する複数のユーザーにマッピングすることができます。
同じIAMグループに属するデータベースユーザは、同じアクセス権を得ることができ、同じ責任を持つ複数のユーザーを管理するDBAの仕事を大幅に簡素化することができます。
ユーザは、複数のADB-Sデータベースに対して、一元管理された単一のユーザ名とパスワードで認証を行うことができるようになりました。
データベースクライアントに特別な設定やパッチは必要なく、現在データベースと連携しているクライアントはすべて正常に機能し続けます。
構成ステップ
以下のステップで構成します。
- Autonomous Databaseで外部認証としてIAM認証を有効化
- IAMグループとポリシーを作成
- Autonomous DatabaseグローバルユーザをIAMグループにマップ
- Autonomous DatabaseのグローバルロールをIAMグループにマップ
- IAMユーザのIAMデータベースパスワードを作成
- IAM認証を使用 してAutonomous Databaseに接続
Autonomous Databaseで外部認証としてIAM認証を有効化
Database ActionsなどでAutonomous DatabaseにADMINユーザーとしてログインし、IAM認証を有効化
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
type => 'OCI_IAM',
force => TRUE );
END;
/
設定の確認
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
NAME VALUE
---------------------- -------
identity_provider_type OCI_IAM
IAMグループとポリシーを作成
IAMにデータベースログイン用途のグループを作成し、Autonomous Databaseへのアクセスを許可するポリシーを作成、グループにIAMユーザを追加
グループ名の例:dbusers
ポリシーの例:allow group dbusers to use autonomous-database-family in tenancy
Autonomous DatabaseグローバルユーザをIAMグループにマップ
IAMユーザがAutonomous Databaseへのアクセスするには、データベースグローバルユーザをIAMグループにマッピングします。
CREATE USER or ALTER USER文でIDENTIFIED GLOBALLY AS句を指定します。
CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';
CREATE USER scott IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=dbusers';
Autonomous DatabaseのグローバルロールをIAMグループにマップ
Database ActionsなどでAutonomous DatabaseにADMINユーザーとしてログインし、CREATE ROLE文にIDENTIFIED GLOBALLY AS句にIAMグループ名を指定しロールを作成
CREATE ROLE global_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';
CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=dbusers';
必要な権限やロールをグローバルロールに付与
GRANT CREATE SESSION TO export_role;
GRANT DWROLE TO export_role;
IAMユーザのIAMデータベースパスワードを作成
IAMユーザの設定で「ユーザー機能の編集」で「データベース・パスワード」が有効になっていることを確認
IAMユーザで「データベース・パスワード」から「データベース・パスワードの作成」をクリックし、パスワードを入力。
「データベース・ユーザー名の編集」をクリックし、Autonomous Databaseにログインの際に使用するグローバルユーザ名を入力。
IAM認証を使用 してAutonomous Databaseに接続
データベースクライアントを使用してIAMデータベースパスワードを持つIAMユーザのデータベースユーザでAutonomous Databaseにアクセス
CONNECT scott@atp_low
Enter password: password
おわりに
IAMユーザでパスワードを一元管理してAutonomous Databaseにアクセスすることができました。
Autonomous DatabaseでIAM認証が有効になっている場合でも、そうでないデータベースユーザーはIDENTIFIED GLOBALLY以前と同じようにログインを続行できます。