0
0

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 1 year has passed since last update.

Redshift Serverless の監査ログについて

Last updated at Posted at 2022-11-20

Redshift Serverless は監査ログ取得をオンにすることで、CloudWatch Logs に監査ログを出力することが可能です。

監査ログの種類

監査ログとして取得可能なのは、以下の 3 種類です。

監査ログの種類 説明
接続ログ 認証試行、接続、切断をログに記録します。
ユーザーログ データベースのユーザー定義の変更に関する情報をログに記録します。
ユーザーアクティビティログ 各クエリをデータベースで実行される前にログに記録します。ユーザーアクティビティログについては、監査ログ設定の他、データベースパラメータ enable_user_activity_logging も有効にする必要がありますが、Redshift Serverless 名前空間作成時、もしくは既存の名前空間の変更でユーザーアクティビティログ有効化時に自動で有効化されます。

各種ログの詳細は以下ドキュメントを参照ください。

監査ログは CloudWatch Logs に出力されますが、Redshift Serverless に付与する IAM ロールには CloudWatch Logs へのアクセス権限を明示的に付与しなくても、監査ログは CloudWatch Logs に作成されます。

生成されたログデータを Amazon CloudWatch Logs にエクスポートするには、コンソールの Amazon Redshift Serverless 設定で、エクスポート対象のログを選択する必要があります。

検証1 拡張された VPC のルーティングが【オフ】の場合

Redshift Serverless ワークグループで拡張された VPC のルーティングがオフの状態で監査ログを有効化してみます。
拡張された VPC のルーティングについては以下のブログをご参照ください。

VPC 、サブネット、ルートテーブル、セキュリティグループ、IAM ロールは事前に作成しておきます。
今回、監査ログ記録を試すだけなので IAM ロールに許可ポリシー(ID ベースのポリシー)は設定していません。

image.png

Redshift Serverless は AWS CLI で作成します。

名前空間の作成
create-namespace — AWS CLI 2.8.4 Command Reference

aws redshift-serverless create-namespace \
  --admin-user-password xxxxxxxxxxxx \
  --admin-username rsadmin \
  --db-name dev1 \
  --iam-roles "arn:aws:iam::123456789012:role/redshift-serverless-role" \
  --log-exports "useractivitylog" "userlog" "connectionlog" \
  --namespace-name redshift-demo-ns1 \
  --tags key=Name,value=redshift-demo-ns1

--log-exports オプションで、出力する監査ログを指定しています。
実行結果

[cloudshell-user@ip-10-0-182-253 ~]$ aws redshift-serverless create-namespace \
>   --admin-user-password Serverw0rk$ \
>   --admin-username rsadmin \
>   --db-name dev1 \
>   --iam-roles "arn:aws:iam::123456789012:role/redshift-serverless-role" \
>   --log-exports "useractivitylog" "userlog" "connectionlog" \
>   --namespace-name redshift-demo-ns1 \
>   --tags key=Name,value=redshift-demo-ns1
{
    "namespace": {
        "adminUsername": "rsadmin",
        "creationDate": "2022-11-20T10:02:40.580000+00:00",
        "dbName": "dev1",
        "iamRoles": [
            "arn:aws:iam::123456789012:role/redshift-serverless-role"
        ],
        "kmsKeyId": "AWS_OWNED_KMS_KEY",
        "logExports": [
            "connectionlog",
            "useractivitylog",
            "userlog"
        ],
        "namespaceArn": "arn:aws:redshift-serverless:ap-northeast-1:123456789012:namespace/a1a1c693-8a07-4d51-9967-d123d617757d",
        "namespaceId": "a1a1c693-8a07-4d51-9967-d123d617757d",
        "namespaceName": "redshift-demo-ns1",
        "status": "AVAILABLE"
    }
}
[cloudshell-user@ip-10-0-182-253 ~]$

ワークグループの作成
create-workgroup — AWS CLI 2.8.4 Command Reference

aws redshift-serverless create-workgroup \
   --base-capacity 32 \
   --namespace-name redshift-demo-ns1 \
   --security-group-ids "sg-03a96ec6d1036cda2" \
   --subnet-ids "subnet-021ec730242bbc555" "subnet-0429e9a0cc658de6e" "	subnet-00ace4894f695d5e6" \
   --tags key=Name,value=redshift-demo-workgp1 \
   --workgroup-name redshift-demo-workgp1

実行結果

[cloudshell-user@ip-10-0-182-253 ~]$ aws redshift-serverless create-workgroup \
>    --base-capacity 32 \
>    --namespace-name redshift-demo-ns1 \
>    --security-group-ids "sg-03a96ec6d1036cda2" \
>    --subnet-ids "subnet-021ec730242bbc555" "subnet-0429e9a0cc658de6e" "subnet-00ace4894f695d5e6" \
>    --tags key=Name,value=redshift-demo-workgp1 \
>    --workgroup-name redshift-demo-workgp1
{
    "workgroup": {
        "baseCapacity": 32,
        "configParameters": [
            {
                "parameterKey": "auto_mv",
                "parameterValue": "true"
            },
            {
                "parameterKey": "datestyle",
                "parameterValue": "ISO, MDY"
            },
            {
                "parameterKey": "enable_case_sensitive_identifier",
                "parameterValue": "false"
            },
            {
                "parameterKey": "enable_user_activity_logging",
                "parameterValue": "true"
            },
            {
                "parameterKey": "query_group",
                "parameterValue": "default"
            },
            {
                "parameterKey": "search_path",
                "parameterValue": "$user, public"
            },
            {
                "parameterKey": "max_query_execution_time",
                "parameterValue": "14400"
            }
        ],
        "creationDate": "2022-11-20T10:02:54.144000+00:00",
        "endpoint": {
            "address": "redshift-demo-workgp1.123456789012.ap-northeast-1.redshift-serverless.amazonaws.com",
            "port": 5439
        },
        "enhancedVpcRouting": false,
        "namespaceName": "redshift-demo-ns1",
        "publiclyAccessible": false,
        "securityGroupIds": [
            "sg-03a96ec6d1036cda2"
        ],
        "status": "CREATING",
        "subnetIds": [
            "subnet-021ec730242bbc555",
            "subnet-0429e9a0cc658de6e",
            "subnet-00ace4894f695d5e6"
        ],
        "workgroupArn": "arn:aws:redshift-serverless:ap-northeast-1:123456789012:workgroup/18338ffb-f280-46cf-a43f-006db60fb86d",
        "workgroupId": "18338ffb-f280-46cf-a43f-006db60fb86d",
        "workgroupName": "redshift-demo-workgp1"
    }
}
[cloudshell-user@ip-10-0-182-253 ~]$ 

作成された名前空間の [セキュリティと暗号化] タブを見ると、監査ログ記録がオンになっており、エクスポートされたログに 3 種類のログが表示されています。
image.png

CloudWatch Logs を見ると、該当の名前空間に対応する CloudWatch Logs が表示されていることが分かります。
image.png

ログイベントを見ると、ログが出力されています。
image.png

デフォルトではロググループの保持期間が「失効しない」になっています。要件にあわせて保持期間を変更するようにしてください。
今回は保持期間を以下の AWS CLI コマンドで 7 日間に変更します。

put-retention-policy — AWS CLI 2.8.4 Command Reference

aws logs put-retention-policy \
  --log-group-name "/aws/redshift/redshift-demo-ns1/connectionlog" \
  --retention-in-days 7
aws logs put-retention-policy \
  --log-group-name "/aws/redshift/redshift-demo-ns1/useractivitylog" \
  --retention-in-days 7
aws logs put-retention-policy \
  --log-group-name "/aws/redshift/redshift-demo-ns1/userlog" \
  --retention-in-days 7

image.png

検証2 拡張された VPC のルーティングが【オン】の場合

Redshift Serverless ワークグループで拡張された VPC のルーティングをオンにして監査ログを有効化してみます。なぜ検証しようと思ったかというと、CloudWatch Logs にログを出力するのに VPC エンドポイントが必要なのかどうか気になったからです。

image.png

Redshift Serverless は AWS CLI で作成します。

名前空間の作成

aws redshift-serverless create-namespace \
  --admin-user-password xxxxxxxxxxxx \
  --admin-username rsadmin \
  --db-name dev2 \
  --iam-roles "arn:aws:iam::123456789012:role/redshift-serverless-role" \
  --log-exports "useractivitylog" "userlog" "connectionlog" \
  --namespace-name redshift-demo-ns2 \
  --tags key=Name,value=redshift-demo-ns2

--log-exports オプションで、出力する監査ログを指定しています。
実行結果

[cloudshell-user@ip-10-0-182-253 ~]$ aws redshift-serverless create-namespace \
>   --admin-user-password Serverw0rk$ \
>   --admin-username rsadmin \
>   --db-name dev2 \
>   --iam-roles "arn:aws:iam::123456789012:role/redshift-serverless-role" \
>   --log-exports "useractivitylog" "userlog" "connectionlog" \
>   --namespace-name redshift-demo-ns2 \
>   --tags key=Name,value=redshift-demo-ns2
{
    "namespace": {
        "adminUsername": "rsadmin",
        "creationDate": "2022-11-20T10:57:31.907000+00:00",
        "dbName": "dev2",
        "iamRoles": [
            "arn:aws:iam::123456789012:role/redshift-serverless-role"
        ],
        "kmsKeyId": "AWS_OWNED_KMS_KEY",
        "logExports": [
            "connectionlog",
            "useractivitylog",
            "userlog"
        ],
        "namespaceArn": "arn:aws:redshift-serverless:ap-northeast-1:123456789012:namespace/ea37a72a-c83e-4d5e-8d9c-2f4b084a2353",
        "namespaceId": "ea37a72a-c83e-4d5e-8d9c-2f4b084a2353",
        "namespaceName": "redshift-demo-ns2",
        "status": "AVAILABLE"
    }
}
[cloudshell-user@ip-10-0-182-253 ~]$

ワークグループの作成

aws redshift-serverless create-workgroup \
   --base-capacity 32 \
   --namespace-name redshift-demo-ns2 \
   --security-group-ids "sg-03a96ec6d1036cda2" \
   --subnet-ids "subnet-021ec730242bbc555" "subnet-0429e9a0cc658de6e" "	subnet-00ace4894f695d5e6" \
   --tags key=Name,value=redshift-demo-workgp2 \
   --workgroup-name redshift-demo-workgp2

実行結果

[cloudshell-user@ip-10-0-182-253 ~]$ aws redshift-serverless create-workgroup \
>    --base-capacity 32 \
>    --enhanced-vpc-routing \
>    --namespace-name redshift-demo-ns2 \
>    --security-group-ids "sg-03a96ec6d1036cda2" \
>    --subnet-ids "subnet-021ec730242bbc555" "subnet-0429e9a0cc658de6e" "subnet-00ace4894f695d5e6" \
>    --tags key=Name,value=redshift-demo-workgp2 \
>    --workgroup-name redshift-demo-workgp2
{
    "workgroup": {
        "baseCapacity": 32,
        "configParameters": [
            {
                "parameterKey": "auto_mv",
                "parameterValue": "true"
            },
            {
                "parameterKey": "datestyle",
                "parameterValue": "ISO, MDY"
            },
            {
                "parameterKey": "enable_case_sensitive_identifier",
                "parameterValue": "false"
            },
            {
                "parameterKey": "enable_user_activity_logging",
                "parameterValue": "true"
            },
            {
                "parameterKey": "query_group",
                "parameterValue": "default"
            },
            {
                "parameterKey": "search_path",
                "parameterValue": "$user, public"
            },
            {
                "parameterKey": "max_query_execution_time",
                "parameterValue": "14400"
            }
        ],
        "creationDate": "2022-11-20T10:57:41.155000+00:00",
        "endpoint": {
            "address": "redshift-demo-workgp2.123456789012.ap-northeast-1.redshift-serverless.amazonaws.com",
            "port": 5439
        },
        "enhancedVpcRouting": true,
        "namespaceName": "redshift-demo-ns2",
        "publiclyAccessible": false,
        "securityGroupIds": [
            "sg-03a96ec6d1036cda2"
        ],
        "status": "CREATING",
        "subnetIds": [
            "subnet-021ec730242bbc555",
            "subnet-0429e9a0cc658de6e",
            "subnet-00ace4894f695d5e6"
        ],
        "workgroupArn": "arn:aws:redshift-serverless:ap-northeast-1:123456789012:workgroup/e6992912-a138-48c5-9937-bcd8e7029135",
        "workgroupId": "e6992912-a138-48c5-9937-bcd8e7029135",
        "workgroupName": "redshift-demo-workgp2"
    }
}
[cloudshell-user@ip-10-0-182-253 ~]$

作成された名前空間の [セキュリティと暗号化] タブを見ると、監査ログ記録がオンになっており、エクスポートされたログに 3 種類のログが表示されています。
image.png

CloudWatch Logs を見ると、該当の名前空間に対応する CloudWatch Logs が表示されていることが分かります。
image.png
ログイベントを見ると、ログが出力されています。
image.png

拡張された VPC のルーティングがオンの状態で CloudWatch Logs 用の VPC エンドポイントが無くても、監査ログが CloudWatch Logs に記録されることが分かりました。

参考

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?