designetwork

ネットワークを軸としたIT技術メモ

Oracle Enterprise Managerのユーザー認証にOpenLDAPを使用する

OracleドキュメントではLDAPオプションとして

が記載されている。

https://docs.oracle.com/cd/F45244_01/emsec/security-features.html#GUID-8FF7D1AE-2BF8-4359-818C-E323AEF818B5

Oracle Internet Directory (OID)ベースの認証 - Oracle Internet DirectoryはOracleデータベースに構築されたLDAP v3準拠ディレクトリで、Oracle Fusion MiddlewareおよびOracle Applicationsに完全に統合されています。そのため、Oracle環境やOracleデータベースのノウハウを持つ企業に適しています。OIDをアイデンティティ・ストアとする認証スキームを使用する場合、アプリケーションでOIDによるユーザーの認証を行うことができます。

OID と 明記されているが、LDAP v3準拠ディレクト が要件であるため、他のLDAPサーバでも動作する。OpenLDAPで期待通り動作することが確認できた。

バージョン情報

LDAP接続設定

設定パラメータはOID向けと同様。

https://docs.oracle.com/cd/F45244_01/emsec/security-features.html#GUID-EBEB366A-8EA1-4C23-BA28-4262F468FAB4

emctl config auth oid -ldap_host <ldap host> -ldap_port <ldap port>
    -ldap_principal <ldap principal> [-ldap_credential <ldap credential>]
    -user_base_dn <user base DN> -group_base_dn <group base DN> [-user_dn <dn>] [-group_dn <dn>]
    [-enable_auto_provisioning] [-auto_provisioning_minimum_role <min_role>] [-minimum_privilege <min_priv>]
    [-use_ssl] [-cert_file <cert>] [-trust_cacerts] [-use_anonymous_bind] [-keystore_pwd keystone_password]

LDAPSで接続した設定例はこちらの通り

emctl config auth oid \
-ldap_host "openldap.<domain>" \
-ldap_port "636" \
-ldap_principal "cn=<cn>,dc=<dc>,dc=<dc>,dc=<dc>" \
-user_base_dn "ou=<ou>,dc=<dc>,dc=<dc>,dc=<dc>" \
-group_base_dn "ou=<ou>,dc=<dc>,dc=<dc>,dc=<dc>" \
-ldap_credential "パスワード" \
-sysman_pwd "パスワード" \
-use_ssl -trust_cacerts \
-enable_auto_provisioning

オプションとして、メールアドレスを引き継ぐ。

emctl set property -name "oracle.sysman.core.security.auth.ldapuserattributes_emuserattributes_mappings" -value "EMAIL={%mail%}"

以下の設定は不要で動作した。後から確認したところ上記コマンドにより同様設定されている。 https://docs.oracle.com/cd/F45244_01/emsec/security-features.html#GUID-558DE78B-8240-4D45-AE25-F93898C392CE

他のLDAPサーバーのタイプを使用してEnterprise Managerを構成するには、次のOMSプロパティを設定する必要があります。これらのプロパティは、emctlまたはコンソールを使用して設定できます。プロパティは、各OMSに対して設定する必要があります。
emctl set property -name "oracle.sysman.core.security.auth.is_external_authentication_enabled" -value "true"
- oracle.sysman.core.security.auth.is_external_authentication_enabled=true
- oracle.sysman.emSDK.sec.DirectoryAuthenticationTypeはLDAP

ロール設定

https://docs.oracle.com/cd/F45244_01/emsec/security-features.html#GUID-974C5E6E-C381-4DCB-8963-BC2BE07485A6

LDAPのグループをEMのロールとして使用することができる。 -group_base_dn 配下のグループをEM外部ロールとして作成できる。 -enable_auto_provisioning を有効にした場合、ユーザーの memberOf 属性のグループ(EM外部ロール)が割り当てられる。

プライベート・ロールにDB名前付き認証情報を継承

プライベート・ロールを作成してDB参照のための名前付き認証情報を継承しておくと、ユーザーがパスワードを意識しなくてよくなる。

セキュリティポリシーに準じて要調整

※プライベート・ロールは SYSMAN で作成したもののみ自動割当が可能。自作スーパー管理者では不可。

アプリ開発者向けにPUBLIC調整

※本内容は環境ごとのポリシーによるため注意

厳密なグループ・ロール管理が不要で、最低限の状態確認およびアプリ開発者向けASH・SQLパフォーマンス分析を許可する場合は以下をPUBLICロールに追加する。 (データベースを管理対象にした後)

  • EM_USER
  • [対象データベース] データベース・アプリケーション開発者

まとめ - Oracle Enterprise Managerのユーザー認証にOpenLDAPを使用する

Oracle Enterprise ManagerとOpenLDAPを連携させてLDAPによりユーザー認証・自動登録ができた。これにより運用効率化とセキュリティ強化が期待できる。