0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

redshiftの監査ログを別のアカウントのS3に吐き出す

Posted at

ちょっとドハマリしたのでメモ。

前提

まず、自分のアカウントでS3に監査ログを既存のS3バケットに吐き出す場合は以下を参考にしてやってみます。
Amazon Redshiftでデータベース監査ログをS3に出力する
Redshiftにバケットを作成させる場合はマネジメントコンソールで有効化すれば特段なにも考えずともよしなに連携してくれます。

別アカウントのS3

ブログに書かれているように、Redshfitを保持しているアカウントの権限をS3のバケットに入れれば問題はありません。
注意点の一つとして、マネジメントコンソールではなくCLIから設定します。

コマンド
RS_CLUSTER="クラスターのID"
S3_BUCKET="S3のバケット名"
REGION="Redshiftを立てているリージョン"

aws redshift enable-logging \
    --cluster-identifier ${RS_CLUSTER} \
    --bucket-name ${S3_BUCKET} \
    --s3-key-prefix "redshift" \
    --region ${REGION}

この際、enable-loggingを投げている認証主体にもputObjectの権限が必要です。

ログをアップロードするために put object のアクセス許可が必要です。 また、ロギングを有効にする IAM ユーザーまたは IAM ロールには、s3:PutObject バケットへの Amazon S3 アクセス許可が必要です。

ですので、バケットポリシは以下のようになります。

s3バケットポリシ
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Put bucket policy needed for audit logging",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::404641285394:user/logs"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<redshiftlogtestbucket-name>/*"
        },
        {
            "Sid": "Get bucket policy needed for audit logging ",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::404641285394:user/logs"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::<redshiftlogtestbucket-name>"
        },
        ++++++++++ここから別アカウント用の設定+++++++++++++++++
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<RedShiftのaccountID>:user/<IAM-USER-NAME>"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<redshiftlogtestbucket-name>",
                "arn:aws:s3:::<redshiftlogtestbucket-name>/*"
            ]
        }
       ++++++++++ここから別アカウント用の設定+++++++++++++++++
    ]
}

document上はputObjectでいいのですが、引っかかると嫌だったので検証時はs3:*でやってしまっています。

S3バケットが暗号化されていた場合

ここでドハマりしました。
私の保持していたバケットはSSE-KMSを利用していたため引っかかったのですが、結論としてSSE-KMSは非対応です。

注記
現在、Amazon S3 管理キー (SSE-S3) 暗号化 (AES-256) のみを監査ログ記録に使用できます。

よく読んだらdocumentに補足が書いてありましたね。
KMSにGRANTしたり、Redshiftを持ってるアカウントで使用できるようにPolicy書いたり迷走しましたが、できないようです。

Redshiftの監査ログを保管するS3バケットの暗号化方式は注意しましょう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?