7.3 トラブルシューティングに関するよくある質問

データ・リダクションの一般的なエラーとその解決方法について学習します。

最も一般的なエラー(ポリシーの編集/適用/権限の問題)は何ですか、どのように解決しますか。

一般的な問題と解決策:

  • ORA-28365/権限が不十分: ポリシーを作成または変更するユーザーに、必要な権限がありません。

    解決策: DBMS_REDACTEXECUTE、および必要なオブジェクト権限(たとえば、ALTER TABLE)を付与します。

  • ORA-28115/ポリシーの競合: 複数のポリシーまたは条件が同じ列に重複しています。

    解決策: DBA_REDACT_POLICIESをレビューし、述語を統合または調整して重複しないようにします。

  • ORA-01031 /実行時の権限が不十分: 問合せをするユーザーに、表に対するSELECT権限がありません。

    解決策: SELECTを明示的に付与してください。データ・リダクションはアクセス制御をオーバーライドしません。

  • ポリシーが作成または編集されていない: 選択したリダクション・タイプの列名またはデータ型が無効です。

    解決策: データ型を確認してください(たとえば、正規表現や部分リダクションは文字の列にのみ適用されます)。

  • 移行後またはインポート後にポリシーがない。

    解決策: ポリシーはメタデータ・オブジェクトです。移行後のDBA_REDACT_POLICIESにポリシーが存在することを確認してください。ない場合は、デプロイメント・スクリプトからそれらを再適用してください。

「リダクションが適用されない」(セッション・コンテキスト、除外、ポリシー条件、ビュー・リライトなど)はどのように診断しますか。

ステップバイステップの確認:

  1. 除外権限の確認: SELECT * FROM USER_SYS_PRIVS WHERE PRIVILEGE='EXEMPT REDACTION POLICY';を実行します。付与されている場合は、リダクションがバイパスされます。
  2. ポリシー状態の確認: DBA_REDACT_POLICIESを問い合せて、ポリシーが有効で、正しい列にアタッチされていることを確認します。
  3. 述語ロジックの評価: ポリシー式を手動でテストします: SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') FROM DUAL;。この条件がfalseに評価された場合、リダクションは適用されません。
  4. ビュー・レイヤーの確認: たとえばビューの式で、保護された列が使用されている場合でも、保護された列にリダクションが適用されます。データがリダクションされずに表示される場合、実際には別のリダクションされていない列または表から、ビューがデータを取得していないことを確認します。
  5. セッション・コンテキストの一致: アプリケーション・セッションに、期待どおりのコンテキスト値(CLIENT_IDENTIFIERMODULEIP_ADDRESSなど)が正しく設定されていることを確認します。
  6. 直接SQLアクセスのテスト: 同じ資格証明を使用して直接問合せ(SQL*Plusなど)を実行し、問題がアプリケーション・コンテキスト関連か、ユーザー権限関連かを確認します。
  7. 監査およびログ: 統合監査またはFGAを使用して、問合せがターゲット・オブジェクトに到達したこと、および条件がトリガーされたかどうかを確認します。

ヒント:

ほとんどの「リダクションが適用されない」ケースは、セッション・コンテキストの不一致、またはロールを介して誤って付与された除外権限のいずれかが原因です。