7.3 トラブルシューティングに関するよくある質問
データ・リダクションの一般的なエラーとその解決方法について学習します。
最も一般的なエラー(ポリシーの編集/適用/権限の問題)は何ですか、どのように解決しますか。
一般的な問題と解決策:
ORA-28365/権限が不十分: ポリシーを作成または変更するユーザーに、必要な権限がありません。解決策:
DBMS_REDACTのEXECUTE、および必要なオブジェクト権限(たとえば、ALTER TABLE)を付与します。ORA-28115/ポリシーの競合: 複数のポリシーまたは条件が同じ列に重複しています。解決策:
DBA_REDACT_POLICIESをレビューし、述語を統合または調整して重複しないようにします。ORA-01031/実行時の権限が不十分: 問合せをするユーザーに、表に対するSELECT権限がありません。解決策:
SELECTを明示的に付与してください。データ・リダクションはアクセス制御をオーバーライドしません。- ポリシーが作成または編集されていない: 選択したリダクション・タイプの列名またはデータ型が無効です。
解決策: データ型を確認してください(たとえば、正規表現や部分リダクションは文字の列にのみ適用されます)。
- 移行後またはインポート後にポリシーがない。
解決策: ポリシーはメタデータ・オブジェクトです。移行後の
DBA_REDACT_POLICIESにポリシーが存在することを確認してください。ない場合は、デプロイメント・スクリプトからそれらを再適用してください。
「リダクションが適用されない」(セッション・コンテキスト、除外、ポリシー条件、ビュー・リライトなど)はどのように診断しますか。
ステップバイステップの確認:
- 除外権限の確認:
SELECT * FROM USER_SYS_PRIVS WHERE PRIVILEGE='EXEMPT REDACTION POLICY';を実行します。付与されている場合は、リダクションがバイパスされます。 - ポリシー状態の確認:
DBA_REDACT_POLICIESを問い合せて、ポリシーが有効で、正しい列にアタッチされていることを確認します。 - 述語ロジックの評価: ポリシー式を手動でテストします:
SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') FROM DUAL;。この条件がfalseに評価された場合、リダクションは適用されません。 - ビュー・レイヤーの確認: たとえばビューの式で、保護された列が使用されている場合でも、保護された列にリダクションが適用されます。データがリダクションされずに表示される場合、実際には別のリダクションされていない列または表から、ビューがデータを取得していないことを確認します。
- セッション・コンテキストの一致: アプリケーション・セッションに、期待どおりのコンテキスト値(
CLIENT_IDENTIFIER、MODULE、IP_ADDRESSなど)が正しく設定されていることを確認します。 - 直接SQLアクセスのテスト: 同じ資格証明を使用して直接問合せ(
SQL*Plusなど)を実行し、問題がアプリケーション・コンテキスト関連か、ユーザー権限関連かを確認します。 - 監査およびログ:
統合監査またはFGAを使用して、問合せがターゲット・オブジェクトに到達したこと、および条件がトリガーされたかどうかを確認します。
ヒント:
ほとんどの「リダクションが適用されない」ケースは、セッション・コンテキストの不一致、またはロールを介して誤って付与された除外権限のいずれかが原因です。