説明
Redshift監査ログを外部に保存しないと、長期の調査に必要な接続やユーザー操作の記録を確保できない場合があります。LoggingPropertiesでS3またはCloudWatch Logsにログを送れますが、データベースのシステムテーブル内の記録とは別の機能です。
ユーザー操作ログにはクラスターパラメーターenable_user_activity_loggingの有効化も必要です。エクスポート設定だけですべてのSQL操作が記録されるわけではありません。
想定される影響
- 必要な期間のアクセスや操作記録を確保できず、インシデント調査が遅れる可能性があります。
- 機密情報を含むクエリが記録されたログのアクセスや保存を適切に管理しないと、情報漏えいにつながる可能性があります。
対処方法
LoggingPropertiesに必要な宛先とログ範囲を設定し、ユーザー操作ログが必要な場合は対応するパラメーターも有効にしてください。保存先の配信権限、アクセス制限、保存期間を設定し、実際の収集を確認してください。
例
S3へのログエクスポートを比較する抜粋です。サブネットグループ、実際のリージョンとクラスター構成で対応するRedshiftNodeType、LoggingBucketNameを用意してください。RedshiftMasterPasswordはデフォルト値のないNoEcho入力や承認済みのシークレット管理方法で渡してください。PubliclyAccessible: trueはログ記録に不要なので、公開範囲も別途検討してください。
変更前
yaml
Resources:
RedshiftCluster:
Type: AWS::Redshift::Cluster
Properties:
ClusterSubnetGroupName: !Ref RedshiftClusterSubnetGroup
DBName: analytics
MasterUsername: admin
MasterUserPassword: !Ref RedshiftMasterPassword
PubliclyAccessible: true
NodeType: !Ref RedshiftNodeType
Port: 5439
外部へのログエクスポートがありません。データベース内部のシステムテーブルに記録がないという意味ではありません。
変更後
yaml
Resources:
RedshiftCluster:
Type: AWS::Redshift::Cluster
Properties:
ClusterSubnetGroupName: !Ref RedshiftClusterSubnetGroup
DBName: analytics
MasterUsername: admin
MasterUserPassword: !Ref RedshiftMasterPassword
PubliclyAccessible: true
NodeType: !Ref RedshiftNodeType
Port: 5439
LoggingProperties:
BucketName: !Ref LoggingBucketName
S3のログ保存先を指定します。バケットへの配信権限とユーザー操作ログのパラメーターは別途確認してください。