API Gateway: audit_purge.sh メンテナンススクリプトを使用してデータベースの監査レコードを管理する
search cancel

API Gateway: audit_purge.sh メンテナンススクリプトを使用してデータベースの監査レコードを管理する

book

Article ID: 249686

calendar_today

Updated On:

Products

CA API Gateway

Issue/Introduction

デフォルトでは、CA API Gateway は監査レコードをローカルの MySQL データベースに保存して、使いやすさとシンプルなストレージを実現します。これにより、Gateway はローカル データベースから監査レコードにすばやくアクセスして、管理者やオペレータがレビューできるようになります。これらの監査レコードは、生成される監査レコードの量が環境に合わせて適切に調整されない限り、ますます大量のデータベース表領域を消費します。

従来、Broadcom は、パフォーマンスと可用性の理由から、Gateway データベース内に維持される監査レコードの数とサイズを最小限に抑えることを推奨していました。Broadcom は、一部のお客様が、一定の量または質の監査記録を一定期間維持することを義務付ける厳格な規制要件の下で業務を行っていることを理解しています。

スクリプト audit_purge.sh は特定の基準に基づいて監査レコードを管理します。これは CA API Gateway チームによって作成されました。

具体的な基準:
1. 特定の設定可能な経過時間 (日数) よりも古い監査レコード。
2. SEVERE よりも重大度が低い監査レコード。

Environment

Release:
Component: APIGTW

Resolution

監査レコードメンテナンススクリプトは、実行されるたびに事前に決定された一連の設定を使用するように構成できます。たとえば、MySQL サーバーの接続設定と監査期間の制限は、このスクリプト内で設定され、スクリプトが実行されるたびに利用されます。

これらの値を構成するには:

1. スクリプトをテキストエディターで開きます。
2. "Configurable settings" を含む行に移動します。
3. 次の変数を変更します。

VALUE DESCRIPTION DEFAULT
AGE 監査レコードの最大許容期間 10 days
LIMIT 1回のクエリで削除する監査レコードの最大数 5000
PURGE ブール値; 制限を超える監査レコードをパージするかどうかを設定する NO
DB 監査レコードを含むデータベースオブジェクトの名前 ssg
DBHOST データベースホストの完全修飾ドメイン名 localhost
DBUSER 非特権データベースユーザー名 gateway
DBPWD 非特権データベースユーザーのパスワード 7layer

4. ファイルを保存して終了します。


このスクリプトは、中央の場所に格納する必要があります。従来、スクリプトは /usr/local/bin/ または /opt/SecureSpan/Appliance/bin/ にあります。通常、このスクリプトの呼び出しは、Gateway アプライアンスのデフォルトのスケジュールされたタスクハンドラである crond によって処理されます。このスクリプトは、crontab 経由で実行するように構成されていることが期待されます。cron 経由でこのスクリプトを実行するように Gateway アプライアンスを構成する際に支援が必要な場合は、新しいサポートリクエストをオープンしてください。

このスクリプトは、レプリケーションが機能している間に実行することを目的としており、その目的はデータベースからアイテムを削除することです。そのため、監査レコードメンテナンススクリプトは、クラスタ内の 1 つのデータベース ノードだけで実行する必要があります。スクリプトが複数のデータベースノードで同時に実行されると、各データベースノードは同じ監査レコードを削除しようとします。この競合状態により、MySQL のレプリケーションが失敗します。

1. この記事に添付されているファイル (audit_purge.sh) をワークステーションにダウンロードします。
2. ssgconfigユーザーとして、SFTP または SCPを 介して Gateway アプライアンスにスクリプトをアップロードします。
3. スクリプトを ssgconfig ユーザーのホームディレクトリから目的の場所に移動します。
4. 実行可能にする (chmod u+x audit_purge.sh)。
5. スクリプトを手動で実行するか、目的のオプションを使用してcrond から実行するように構成します。

スクリプトコマンドラインを実行してパージするには、次のコマンドを実行する必要があります。

# cd /opt/SecureSpan/Appliance/bin
#./audit_purge.sh -v -p

-v はオプションで、冗長出力です。

実際のレコードを削除する場合は、-p が必要です。スクリプトで PURGE=YES を指定して常にパージするようにするか、またはレコードを実際に削除するにはコマンドラインで -p を常に指定する必要があります。 

注意: 使用可能なオプションは -h オプションを指定してスクリプトを実行することで確認できます。

Additional Information

audit_purge.sh スクリプトと getPwd-1.0.xml ポリシーのファイルは、以下のオリジナル英文文書に添付されています。そちらをご利用ください

[英語文書] API Gateway: Managing audits in the database with the audit_purge.sh maintenance script.

保存されたパスワードの使用

保存されたパスワードを使用し、パージスクリプトで平文のパスワードを使用しないようにするには、次の手順を試してください。

1. Policy Manager で保存されたパスワード MySQLAdminPwd を作成し、"Permit use via context variable reference" オプションがオンになっていることを確認します。
2. 添付されたポリシー getPwd-1.0.xml をパブリッシュし、リゾリューションパスが /getPwd であることを確認します。
3. audit_purge.sh で、
(1) 以下の行をコメントアウトします:
DBPWD="7layer"
(2) 以下のコメントを外します:
#DBPWD=`/usr/bin/wget -O- -q --no-check-certificate https://localhost:8443/getPwd?p= dbadminpwd `
4. (オプション) getPwd サービスと保存されたパスワードが適切に構成されているかどうかをテストするには、Gateway サーバーで次のコマンドを実行します。
/usr/bin/wget -O- -q --no-check-certificate https://localhost:8443/getPwd?p=dbadminpwd
保存されたパスワード MySQLAdminPwd のパスワードが表示されます。

cron ジョブの例

(Gateway 9.x) cron ジョブを編集るには:
crontab -e
 
0 23 * * * /opt/SecureSpan/Appliance/bin/audit_purge.sh -v -p > /tmp/audit_purge.log

(Gateway 10.x) cron ジョブを編集するには:
crontab -e
 
0 23 * * * /opt/SecureSpan/Appliance/bin/audit_purge _gw10 .sh -v -p > /tmp/audit_purge_gw10.log

毎日深夜 (午後 11 時) に監査パージを実行します。

注意:
1. データベースバッチジョブは常に DB のパフォーマンスに影響を与えるため、cron ジョブは常に営業時間外にスケジュールする必要があります。
2. パージジョブの頻度が高いほど、1 回ごとに必要な時間が少なくなるため、毎日のジョブ、または週末に毎週のジョブを実行することをお勧めします。
3. 最初のパージには時間がかかる可能性があるため、Gateway が停止しているように見える場合があります。最初のパージは、スケジュールされた時間帯に手動で実行することをお勧めします。
(デフォルトでは、毎回 5000 レコードのみをパージするため、最初のパージには -l オプションを指定します。または、数回実行します)