2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] Autonomous Databaseのログイン認証にIAM認証を使用してみた

Posted at

はじめに

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データベースに対して、一元管理された単一のユーザ名とパスワードで認証を行うことができるようになりました。
データベースクライアントに特別な設定やパッチは必要なく、現在データベースと連携しているクライアントはすべて正常に機能し続けます。

構成ステップ

以下のステップで構成します。

  1. 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ユーザの設定で「ユーザー機能の編集」で「データベース・パスワード」が有効になっていることを確認
image.png

image.png

image.png

IAMユーザで「データベース・パスワード」から「データベース・パスワードの作成」をクリックし、パスワードを入力。
image.png
image.png
image.png

「データベース・ユーザー名の編集」をクリックし、Autonomous Databaseにログインの際に使用するグローバルユーザ名を入力。
image.png
image.png

IAM認証を使用 してAutonomous Databaseに接続

データベースクライアントを使用してIAMデータベースパスワードを持つIAMユーザのデータベースユーザでAutonomous Databaseにアクセス

CONNECT scott@atp_low
Enter password: password

おわりに

IAMユーザでパスワードを一元管理してAutonomous Databaseにアクセスすることができました。
Autonomous DatabaseでIAM認証が有効になっている場合でも、そうでないデータベースユーザーはIDENTIFIED GLOBALLY以前と同じようにログインを続行できます。

参考情報

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?