Oracle Databaseセキュリティ・ガイドのこのリリースの変更

この章の内容は次のとおりです。

Oracle Database Security 23cでの変更点

Oracle Database23cの『Oracle Databaseセキュリティ・ガイド』には、新しいセキュリティ機能が記載されています。

Oracle DatabaseでサポートされるようになったTransport Layer Security 1.3プロトコル

Oracle Database 23c以降、Oracle Databaseでは、Transport Layer Security (TLS)バージョン1.3がサポートされており、これは、TLS設定での暗号スイートの使用に影響します。

TLS 1.3では初期セッション設定の方が以前のTLSバージョンよりも効率的に処理されるため、TLS 1.3に移行するユーザーはTLSパフォーマンスの向上を確認する必要があります。TLS 1.3では、転送中のデータの機密性を向上させる、より安全で新しい暗号スイートも実装されています。サポートされていないTLSプロトコル・バージョン(1.0および1.1)からバージョン1.3に、すぐに移行することをお薦めします。

簡略化されたTransport Layer Security構成

Oracle Database 23c以降、データベース・クライアントとサーバー間のTransport Layer Security (TLS)構成が簡略化され、さらに安全性が向上しました。

変更内容は次のとおりです。

  • クライアントWALLET_LOCATIONパラメータのデフォルトを更新して、設定されていない場合はかわりにTNS_ADMINパラメータの値が使用されるようになりました。
  • (TLSv1.3, TLSv1.2)などの文字列のカンマ区切りリストを受け入れることができるように、SSL_VERSIONパラメータを更新します。
  • 以前の認証アルゴリズムを引き続き使用する必要がある環境のユーザーのためにALLOWED_WEAK_CERT_ALGORITHMSパラメータが導入されました。このパラメータは、ALLOW_MD5_CERTSおよびALLOW_SHA1_CERTSパラメータに代わるものです。ALLOWED_WEAK_CERT_ALGORITHMSが設定されていると、Oracle DatabaseはALLOW_MD5_CERTSALLOW_SHA1_CERTSを無視します。ただし、ALLOWED_WEAK_CERT_ALGORITHMSが設定されていない場合、Oracle DatabaseはALLOW_MD5_CERTSALLOW_SHA1_CERTSの設定をチェックして使用します。デフォルトでは、SHA1証明書が許可され、MD5証明書は許可されません。
  • 次のパラメータが非推奨となりました。
    • ADD_SSLV3_TO_DEFAULT
    • ALLOW_MD5_CERTS
    • ALLOW_SHA1_CERTS
  • ウォレットのロード方法が変更されました
    • サーバー側のウォレット: サーバー側のウォレット用のWALLET_LOCATIONパラメータは非推奨です。かわりに、init.oraファイルでWALLET_ROOT初期化パラメータを使用します。
    • クライアント側のウォレット: WALLET_LOCATIONパラメータは引き続き、クライアント側のウォレットに使用できます。
  • ウォレットの処理のパフォーマンスが改善されました

アクセス制御を簡略化するスキーマ権限

Oracle Database 23c以降、Oracle Databaseでは、既存のオブジェクト、システムおよび管理権限に加えてスキーマ権限がサポートされています。

行レベル・セキュリティ、ファイングレイン監査またはOracle Data Redactionのセキュリティ・ポリシーを管理する場合は、次の新しいシステム権限が必要です。これらは、データベース内のSYS以外のすべてのスキーマでセキュリティ・ポリシーを有効にしたり、セキュリティ・ポリシーを1つのスキーマに制限するために付与できます。

  • ADMINISTER ROW LEVEL SECURITY POLICY: DBMS_RLSパッケージが行レベルのセキュリティ・ポリシーに使用される場合
  • ADMINISTER FINE GRAINED AUDIT POLICY: DBMS_FGAパッケージがファイングレイン監査ポリシーに使用される場合
  • ADMINISTER REDACT POLICY: DBMS_REDACTパッケージがデータ・リダクション・ポリシーに使用される場合

この新機能の一部として、次のビューが導入されました。

  • DBA_SCHEMA_PRIVS
  • ROLE_SCHEMA_PRIVS
  • USER_SCHEMA_PRIVS
  • SESSION_SCHEMA_PRIVS
  • V$ENABLEDSCHEMAPRIVS

以前のリリースでは、オブジェクト権限により、HR.EMPLOYEES表などの個々のオブジェクトへのアクセスがきめ細かく制御されていました。システム権限は、特定のタイプのデータベース内のすべてのオブジェクトに同様のアクセス権(SELECT ANY TABLEシステム権限など)を管理者が付与するように設計されていました。ユーザーがアプリケーション・オブジェクトに対して十分な権限のみを提供する(最小権限の原則)必要があるアプリケーションの場合、すべてのオブジェクトに対するあらゆる権限を付与および追跡する必要がありました。したがって、同じスキーマ内の新しいオブジェクトに、新しいオブジェクト権限が必要でした。新しいスキーマ権限を使用すると、スキーマ全体に対する権限を付与できるため、アプリケーション認可が簡略化され、セキュリティが向上します。例:

GRANT SELECT ANY TABLE ON SCHEMA HR TO SCOTT;

Oracle Databaseに含まれるOracle SQLファイアウォール

Oracle Databaseに組み込まれているSQLファイアウォールは、すべての受信SQL文を検査し、明示的に認可されたSQLのみが実行されるようにします。

SQLファイアウォールを使用して、データベースで処理できるSQL文を制御できます。データベース接続およびSQL文に関連付けられた接続パスを制限できます。認可されていないSQLを記録してブロックできます。

SQLファイアウォールはOracleデータベースに含まれているため、バイパスできません。ローカル・テキストかネットワーク・テキストか、暗号化テキストかクリア・テキストかに関係なく、すべてのSQL文が検査されます。最上位のSQL、ストアド・プロシージャおよび関連するデータベース・オブジェクトが調査されます。

SQLファイアウォールは、承認されたSQL文または接続にのみデータベース・アクセスを制限することで、一般的なデータベース攻撃に対するリアルタイムの保護を提供します。SQLインジェクション攻撃、異常なアクセス、資格証明の盗難または不正使用によるリスクを軽減します。

SQLファイアウォールは、IPアドレス、オペレーティング・システムのユーザー名、オペレーティング・システム・プログラム名などのセッション・コンテキスト・データを使用して、データベース・アカウントがデータベースに接続する方法を制限します。これにより、アプリケーション・サービス・アカウント資格証明の盗難または誤用のリスクを軽減できます。SQLファイアウォールの一般的なユースケースは、アプリケーションのワークロードに関するものです。

SQLファイアウォールは、ルートとプラガブル・データベース(PDB)の両方で使用できます。

最大パスワード長の増加

Oracle Database 23c以降、Oracle Databaseでは最大1024バイトの長さのパスワードがサポートされています。

以前のリリースでは、Oracle Databaseのパスワードの長さおよび安全性の高いロールのパスワードの長さは最大30バイトでした。パスワードの最大長が1024バイトに増えたことで、次の利点があります。

  • Oracle Identity Cloud Service (IDCS)およびIdentity Access Management (IAM)で使用されるパスワードに対応します。1024バイトに増えたことで、すべてのクラウド・デプロイメントで同一のパスワード・ルールが使用できるようになります。
  • NLS構成でパスワードのマルチバイト文字が1バイト超を使用した場合、30バイトの制限は厳しすぎました。

関連トピック

読取り専用のユーザーおよびセッション

Oracle Database 23c以降、データベースに接続しているユーザーの権限に関係なく、ユーザーまたはセッションに読取り/書込み操作を可能にするかどうかを制御できます。

READ_ONLYセッションは、どのタイプのコンテナの、どのタイプのユーザーにも適用されます。READ_ONLYユーザーはローカル・ユーザーにのみ適用されます。

権限の取消しや再付与なしで任意のユーザーまたはセッションの読取り/書込み機能を無効化し再有効化できるようにすると、テスト、管理またはアプリケーション開発の目的でユーザーまたはセッションの権限を一時的に制御することがより容易になります。また、同じユーザーまたはセッションによって使用される、アプリケーションの様々な部分で、読取り/書込み動作を簡単に制御できるようになります。

アプリケーション開発者用の新しいデータベース・ロール

Oracle Database 23c以降、アプリケーション開発者専用の新しいロールDB_DEVELOPER_ROLEが導入されました。これは、最小権限の原則を使用して、セキュリティを強化するためのものです。

Oracle Databaseには、スキーマ・ユーザーまたはロールに付与できる多数の個別の権限の他、実行可能な多数のストアドPL/SQLパッケージまたは組込みPL/SQLパッケージがあります。アプリケーションを設計、開発およびデプロイする開発者には、これらのサブセットが必要です。アプリケーション開発者または所有者は、アプリケーション開発者が必要とするすべての権限を認識または把握していないことがあるため、データベース管理者が開発者に包括的な権限を付与する可能性があります。必要以上の権限を開発者に提供すると、潜在的なセキュリティ・リスクが発生する可能性があります。包括的な権限を付与するかわりに、アプリケーション開発者が現在付与されていない必要な権限を特定したときに、必要に応じて権限を選択的に付与します。

DB_DEVELOPER_ROLEロールの利点は、Oracleデータベースのアプリケーションを設計、実装およびデプロイするために必要な権限のみをアプリケーション開発者に素早く簡単に付与できることです。

職務分離保護による、SYS以外のOracleスキーマまで拡張されたOracleデータ・ディクショナリ保護

Oracle Database 23c以降、Oracle Databaseスキーマは、SYSBACKUPSYSKMSYSRACおよびSYSDGスキーマの追加の職務分離保護により、データ・ディクショナリ保護を実現できるようになりました。

ディクショナリ保護は、AUDSYSLBACSYSなどのOracleスキーマに適用されています。ディクショナリ保護されたOracleスキーマの全リストを確認するには、次の問合せを実行します。

SELECT USERNAME, DICTIONARY_PROTECTED FROM DBA_USERS WHERE DICTIONARY_PROTECTED='YES';

ディクショナリ保護には、SYSDBASYSBACKUPSYSKMSYSRACおよびSYSDG管理権限の基礎となるスキーマが含まれます。これらには、追加の職務分離保護があります。直接ログインとプロキシ・ログインはブロックされ、パスワードの変更はユーザーのみに制限されます。

Oracleスキーマには、Oracle Databaseの機能に不可欠な機能があります。これらのスキーマがディクショナリ保護を受けることができるようになると、Oracle Databaseの機能を危険にさらす可能性のあるこれらのスキーマ内での不注意な変更や悪意のある変更を防ぐことができます。

SSL_SERVER_DN_MATCHの動作を制御するSSL_ALLOW_WEAK_DN_MATCHパラメータ

Oracle Databaseリリース23以降、SSL_ALLOW_WEAK_DN_MATCHパラメータを使用して、SSL_SERVER_DN_MATCHで部分識別名一致にサービス名を使用できる方法を制御し、データベース・サーバーの証明書のみをチェックすることができます。

Oracle Database 23cでは、SSL_SERVER_DN_MATCHパラメータの動作が変更されました。以前は、DN一致について、データベース・サーバーの証明書のみがチェックされました。Oracle Database 23cでは、リスナーとサーバーの両方の証明書がチェックされます。また、SERVICE_NAME設定は、部分DN一致時のチェックに使用されません。HOSTNAME設定は引き続き、リスナーとサーバーの両方の証明書で、証明書DNおよびサブジェクト代替名(SAN)との部分DN一致に使用できます。TRUEに設定すると、SSL_ALLOW_WEAK_DN_MATCHパラメータは、SSL_SERVER_DN_MATCHをリリース23cより前の旧動作に戻し、DN一致ではデータベース・サーバーの証明書のみをチェックし(ただし、リスナーはチェックしません)、サービス名を部分DN一致に使用できるようにします。

リスナーとサーバーの両方の証明書によるDN一致により、セキュリティが向上し、クライアントが正しいデータベース・サーバーに接続していることをが保証されます。セキュリティの向上のため、サービス名の設定もSSL_SERVER_DN_MATCHから削除されますが、部分DN一致は引き続き、ホスト名の接続文字列パラメータと証明書の共通名(CN)およびサブジェクト代替名(SAN)との一致で実行できます。

SSL_ALLOW_WEAK_DN_MATCHは、このリリースの新機能ですが、一時的なソリューションとみなされるため、非推奨とされます。

クライアント・ウォレットを使用しないTransport Layer Security接続を構成する機能

Oracle Database 23c以降、LinuxおよびMicrosoft Windowsプラットフォームでは、ローカル・システムの別の場所で既知のCAルート証明書が使用可能な場合に、Oracle Databaseクライアントは、その証明書を保持するためのウォレットを提供する必要がなくなりました。

Transport Layer Security (TLS)暗号化には、一方向認証または双方向認証のいずれかが必要です。HTTPS接続に一般的に使用される一方向認証では、ローカル・システムですでに使用可能な既知のルートCA証明書を使用して、サーバー証明書が検証されます。このリリースから、ルート証明書がすでにローカル・システムで使用可能である場合は、その既知の証明書を保持するウォレットをインストールして構成する必要がなくなります。

この拡張により、Oracle Databaseクライアントのインストールと、Oracle Databaseクライアント/サーバー通信を暗号化するTLSプロトコルの使用が大幅に簡略化されます。

Kerberosライブラリの更新とその他の改善点

Oracle Database 23c以降、Oracle DatabaseではMIT Kerberosライブラリ・バージョン1.20.1がサポートされている他、様々な改善点があります。

改善点は、次のとおりです。

  • sqlnet.ora KERBEROS5_CC_NAMEパラメータでは、複数のプリンシパルがサポートされ、Kerberos Key Distribution Center (KDC)によって戻される資格証明が暗号化形式で格納されるようになりました。
  • 他のドメインのリソースにアクセスするためのドメイン間サポートが提供されます。
  • Windows Credential Guardがサポートされます。
  • Oracle Database上のKerberosは、sqlnet.oraファイルでKERBEROS5_CC_PRINCIPALパラメータを検索できます。
  • okinitoklistおよびokdstryユーティリティは、KERBEROS5_CC_NAMEパラメータを使用してファイルベースのキャッシュが指定されている場合、暗号化キャッシュ・ファイルと連携して機能します。

関連トピック

ローカル自動ログイン・ウォレットの機能と安全性の向上

Oracle Database 23c以降、新規作成されたローカル自動ログイン・ウォレット(またはリリース23c用に更新されたリリース23cより前のウォレット)は、よりセキュアです。

ローカル自動ログイン・ウォレットは、作成または変更されたホストとさらに緊密に結び付けられています。ローカル自動ログイン・プロセスもより安全になり、追加のデプロイメント要件を必要とせず、rootアクセスを必要としません。

ローカル自動ログイン・ウォレットはより安全になり、ベア・メタル環境と仮想環境の両方をサポートしています。

この機能強化は、透過的データ暗号化(TDE)の自動ログイン・キーストアにも適用されます。

非推奨の暗号の使用を防止する新しいsqlnet.oraパラメータ

Oracle Database 23c以降、SSL_ENABLE_WEAK_CIPHERS sqlnet.oraパラメータをFALSEに設定することで、非推奨の暗号の使用をブロックできます。

Oracleデータベースでは、最新の暗号より安全性の低い非推奨の暗号に依存していない場合、それらの使用を防ぐことができます。これにより、コンプライアンス監査を通過しやすくなり、データベースの全体的なセキュリティが向上します。

RADIUS構成の拡張

Oracle Database 23c以降、Oracle Databaseでは、Request for Comments (RFC) 6613および6614のガイドラインと、最新の標準によるRADIUSセキュリティの更新がサポートされています。

この拡張により、次の新しいRADIUS関連のsqlnet.oraパラメータが導入されました。

  • SQLNET.RADIUS_ALTERNATE_TLS_HOST
  • SQLNET.RADIUS_ALTERNATE_TLS_PORT
  • SQLNET.RADIUS_AUTHENTICATION_TLS_HOST
  • SQLNET.RADIUS_AUTHENTICATION_TLS_PORT
  • SQLNET.RADIUS_TRANSPORT_PROTOCOL

次の既存のRADIUS sqlnet.oraパラメータが更新されました。

  • SQLNET.RADIUS_ALTERNATE_PORT
  • SQLNET.RADIUS_AUTHENTICATION_PORT
  • SQLNET.RADIUS_SECRET

Oracle Database 23cでは、古いRADIUS標準がデフォルトでブロックされます。リリース23cより前のクライアントで古いプロトコルを使用して接続できるようにする必要がある場合は、sqlnet.oraファイルで、リリース23cの新しい次のパラメータの一方または両方を設定します。

  • SQLNET.RADIUS_ALLOW_WEAK_CLIENTSは、リリース23cより前のデータベース・クライアントで古い標準を使用してRADIUSユーザーに接続できるようにします。
  • SQLNET.RADIUS_ALLOW_WEAK_PROTOCOLは、リリース23cより前のデータベース・サーバーで古い標準を使用してRADIUSサーバーに接続できるようにします。

この拡張は、Oracle Database RADIUS APIがTCP over Transport Layer Security (TLS)を実装し、AES256やSHA512のサポートなど、その他のセキュリティの改善を実現するのに役立ちます。

DBMS_CRYPTO PL/SQLパッケージの拡張

Oracle Database 23c以降、DBMS_CRYPTO PL/SQLパッケージには、楕円曲線Diffie-Hellman (ECDH)操作、更新された署名および汎用アルゴリズム、その他の拡張機能など、複数の顧客のニーズをサポートするAPIがあります。

これらの機能強化は次のとおりです。

  • 楕円曲線Diffie-Hellman (ECDH)操作用の新しいAPI
    • ECDH_GENKEYPAIR: この関数は、EC公開/秘密キーのペアを生成します
    • ECDHDERIVE_SHAREDSECRET: この関数は、ローカル・アプリケーションの秘密キーとリモート・アプリケーションの公開キーを使用して共有シークレットを導出します。
  • 新しいPKENCRYPT/PKDECRYPTアルゴリズム: PKENCRYPT_RSA_PKCS1_OAEP_SHA2
  • 新しいチェーン・モードGCM CCM
  • 新しいDBMS_CRYPTOブロック暗号スイートAES_CCM_NONEおよびAES_GCM_NONE
  • 新しい署名および検証アルゴリズム:
    • SIGN_SHA224_ECDSA
    • SIGN_SHA256_ECDSA
    • SIGN_SHA384_ECDSA
    • SIGN_SHA512_ECDSA
    • SIGN_ECDSA

Oracle Autonomous Database on Dedicated Exadata Infrastructureに対するIAMユーザーの認証と認可

Oracle Database 23cでは、Oracle Autonomous Database on Dedicated Exadata Infrastructureに対してIAMユーザーを認証および認可できます。

追加の機能強化は次のとおりです。

  • アプリケーションは、エンド・ユーザー、インスタンスおよびリソース・プリンシパルを使用してAutonomous Databaseインスタンスに接続できるようになりました。
  • IAMユーザーは、データベース・ユーザー・スキーマを使用してAutonomous Databaseにプロキシできるようになりました。
  • データベース・リンクがIAM接続でサポートされます。

Oracle Cloud Infrastructure Autonomous DatabaseとのMicrosoft Azure Active Directory統合

2022年6月にOracle Autonomous Databaseで利用可能となり、Microsoft Azure Active Directory (Azure AD)ユーザーは、Azure AD OAuth2アクセス・トークンを使用してOracle Cloud Infrastructure (OCI) Autonomous Databaseにログインできます。

OCI Oracle Autonomous Databaseは、Azure AD OAuth2トークンを受け入れてデータベースにアクセスできるようになりました。Azure ADユーザーはAzure ADトークンを使用してデータベースに直接アクセスでき、アプリケーションはサービス・トークンを使用してデータベースにアクセスできます。

Azure AD OAuth2トークンを使用してデータベースにアクセスできます。Azure ADユーザーはAzure ADトークンを使用してデータベースに直接アクセスでき、アプリケーションはサービス・トークンを使用してデータベースにアクセスできます。

表およびビューの列レベルでオブジェクト・アクションを監査する機能

Oracle Database 23c以降、統合監査ポリシーを作成して、表およびビューの個々の列を監査できます。

CREATE AUDIT POLICYおよびALTER AUDIT POLICYプロシージャのACTIONS句を使用すると、アクセスを監査する列のリストを指定できます。たとえば、表のSALARY列でUPDATE文を監査するには、ACTIONS UPDATE(SALARY)と指定します。

この機能を使用すると、より詳細で焦点を絞った監査ポリシーを構成でき、不要な監査レコードの作成を減らすのに十分選択的であり、コンプライアンス要件を満たすのに十分効果的な監査が保証されます。

FIPS_140パラメータの統合

Oracle Database 23c以降、FIPS_140パラメータを使用すると、複数のOracle Databaseの環境と機能に統一された方法でFIPSを構成できます。

これに該当する環境と機能は次のとおりです。

  • 透過的データ暗号化(TDE)
  • DBMS_CRYPTO PL/SQLパッケージ
  • Transport Layer Security(TLS)
  • ネットワーク・ネイティブ暗号化

こうした環境ではFIPS 140-2レガシー構成を引き続き使用できますが、統合されたFIPS_140パラメータの使用をお薦めします。

大/小文字を区別しないパスワードのサポート解除

Oracle Database 23c以降、大/小文字を区別しないパスワードはサポートされなくなりました。

パスワードの大/小文字が区別されないユーザーは、Oracle Database 23cへのアップグレード後にデータベースにログインできません。アップグレードする前に、管理者は次の問合せを使用して、パスワードの大/小文字が区別されないユーザーを検索し、それらのユーザーにパスワードの変更を通知する必要があります。

SELECT USERNAME FROM DBA_USERS
WHERE (PASSWORD_VERSIONS = '10G '
OR PASSWORD_VERSIONS = '10G HTTP ')
AND USERNAME <> 'ANONYMOUS';

パスワードを変更すると、より新しいセキュアなパスワード・バージョンを使用できるようになります。リリース23cにすでにアップグレード済で、パスワードの大/小文字が区別されないユーザーがいる場合、これらのユーザーはログインできません。管理者はこれらのユーザーのパスワードを変更する必要があります。10Gパスワード・バージョンのみを持つユーザーのパスワードは、変更されるまで大/小文字が区別されず、変更後に大/小文字が区別されます。

従来の監査のサポート終了

Oracle Database 23c以降、従来の監査はサポートされなくなりました。

統合監査がOracle Databaseの監査を実行するための方法になります。統合監査では、選択的かつ効果的な監査をより柔軟に実行できます。これは、企業にとって重要なアクティビティに重点を置くために役立ちます。統合監査には、単一のセキュアな統合証跡、監査選択性に関する条件ポリシーおよび簡潔性に関する事前構成済のデフォルト・ポリシーがあります。セキュリティとコンプライアンスの向上のために、統合監査の使用をお薦めします。