QuickSight とは別リージョンにある Secrets Manager でパスワード管理された Redshift を QuickSight で可視化する際のパスワードローテーション

質問

  • 【質問1】Secrets Manager が別リージョンにある場合、データソースのパスワードを Secrets Manager で管理することはできないでしょうか?
  • 【質問2】設定箇所が足りていない、間違っている箇所があればご指摘いただけないでしょうか?

背景

データソースとして Secrets Manager でパスワード管理をしているバージニア北部リージョンの Redshift を、東京リージョンの QuickSight で可視化します。

パスワードをべた書きした状態では正常に接続し、QuickSight の分析で可視化できています。
パスワードをべた書きで作成したデータソースのパスワードを Secrets Manager で管理するように変更しようとすると、

An error occurred (InvalidParameterValueException) when calling the UpdateDataSource operation: The SecretArn arn:aws:secretsmanager:us-east-1:123456789012:secret:redshift!20241106-namespace-xxxxx must have the same partition and region as the DataSource.

というエラーで失敗します。

QuickSight の管理画面でバージニア北部リージョンのシークレットへのアクセス許可は設定しています。

実施していること

以下のドキュメント等を参照し検証しています。

update-data-source でデータソースを更新するため、CLI スケルトンで JSON ファイルを作成します。

▼実行結果

[cloudshell-user@ip-10-134-29-157 ~]$ aws quicksight update-data-source --generate-cli-skeleton > update-data-source-secrets.json
[cloudshell-user@ip-10-134-29-157 ~]$ cat update-data-source-secrets.json 
{
    "AwsAccountId": "",
    "DataSourceId": "",
    "Name": "",
    "DataSourceParameters": {
        "AmazonElasticsearchParameters": {
            "Domain": ""
        },
        :
        :
        "RedshiftParameters": {
            "Host": "",
            "Port": 0,
            "Database": "",
            "ClusterId": "",
            "IAMParameters": {
                "RoleArn": "",
                "DatabaseUser": "",
                "DatabaseGroups": [
                    ""
                ],
                "AutoCreateDatabaseUser": true
            },
            "IdentityCenterConfiguration": {
                "EnableIdentityPropagation": true
            }
        },
        :
        :
    },
    "Credentials": {
        "CredentialPair": {
            "Username": "",
            "Password": "",
            "AlternateDataSourceParameters": [
                {
                    "AmazonElasticsearchParameters": {
                        "Domain": ""
                    },
                    :
                    :
                    "RedshiftParameters": {
                        "Host": "",
                        "Port": 0,
                        "Database": "",
                        "ClusterId": "",
                        "IAMParameters": {
                            "RoleArn": "",
                            "DatabaseUser": "",
                            "DatabaseGroups": [
                                ""
                            ],
                            "AutoCreateDatabaseUser": true
                        },
                        "IdentityCenterConfiguration": {
                            "EnableIdentityPropagation": true
                        }
                    },
                    :
                    :
                    "BigQueryParameters": {
                        "ProjectId": "",
                        "DataSetRegion": ""
                    }
                }
            ]
        },
        "CopySourceArn": "",
        "SecretArn": ""
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": ""
    },
    "SslProperties": {
        "DisableSsl": true
    }
}
[cloudshell-user@ip-10-134-29-157 ~]$ 

データソースの情報を取得します。

▼実行結果

[cloudshell-user@ip-10-134-29-157 ~]$ aws quicksight list-data-sources \
>   -- --aws-account-id 123456789012
{
    "DataSources": [
        {
        :
        :
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:datasource/92d8a982-3cfc-465d-b5ec-xxxxx",
            "DataSourceId": "92d8a982-3cfc-465d-b5ec-xxxxx",
            "Name": "Virginia-Redshift",
            "Type": "REDSHIFT",
            "Status": "CREATION_SUCCESSFUL",
            "CreatedTime": "2024-11-06T14:52:52.431000+00:00",
            "LastUpdatedTime": "2024-11-06T14:52:52.431000+00:00",
            "DataSourceParameters": {
                "RedshiftParameters": {
                    "Host": "20241106-workgroup.123456789012.us-east-1.redshift-serverless.amazonaws.com",
                    "Port": 5439,
                    "Database": "dev"
                }
            },
            "VpcConnectionProperties": {
                "VpcConnectionArn": "arn:aws:quicksight:ap-northeast-1:123456789012:vpcConnection/afb10c87-da05-40fd-812d-f55acae11ec2"
            },
            "SslProperties": {
                "DisableSsl": false
            }
        },
        {
        :
        :
        }
    ],
    "Status": 200,
    "RequestId": "6c86fe4b-d881-43e7-8c67-01bf4ee77327"
}
[cloudshell-user@ip-10-134-29-157 ~]$ 

JSON ファイルを以下のように修正します。

{
    "AwsAccountId": "123456789012",
    "DataSourceId": "92d8a982-3cfc-465d-b5ec-xxxxx",
    "Name": "Virginia-Redshift",
    "DataSourceParameters": {
        "RedshiftParameters": {
            "Host": "20241106-workgroup.123456789012.us-east-1.redshift-serverless.amazonaws.com",
            "Port": 5439,
            "Database": "dev"
        }
    },
    "Credentials": {
        "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:redshift!20241106-namespace-xxxxx"
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": "arn:aws:quicksight:ap-northeast-1:123456789012:vpcConnection/afb10c87-da05-40fd-812d-f55acae11ec2"
    },
    "SslProperties": {
        "DisableSsl": false
    }
}

データソースを更新しようとすると、以下のエラーで失敗します。

▼実行結果

[cloudshell-user@ip-10-134-29-157 ~]$ aws quicksight update-data-source \
>   --cli-input-json file://update-data-source-secrets.json

An error occurred (InvalidParameterValueException) when calling the UpdateDataSource operation: The SecretArn arn:aws:secretsmanager:us-east-1:123456789012:secret:redshift!20241106-namespace-xxxxx must have the same partition and region as the DataSource.
[cloudshell-user@ip-10-134-29-157 ~]$ 

@emikitani
お問い合わせありがとうございます。

状況の切り分けのために、こちらを参考に secrets managerをクロスリージョンレプリケートして、ap-northeast-1の シークレットARNをCredentials にセット頂くといったことはお試し頂けますでしょうか?

2 Likes

@yusukez
ご返信ありがとうございます。

バージニア北部リージョンの Secrets Manager のシークレットを QuickSight が有効化されている東京リージョンにレプリケーションし、そのレプリケーションされたシークレットを QuickSight から参照することで接続可能になることを確認いたしました。

実施したこと

バージニア北部リージョンの Secrets Manager シークレットを QuickSight が有効化されている東京リージョンにレプリケーションし、QuickSight の管理より、東京リージョンのシークレットへのアクセス許可を付与しました。

次に、JSON ファイルを以下のように修正しました。

{
    "AwsAccountId": "123456789012",
    "DataSourceId": "92d8a982-3cfc-465d-b5ec-xxxxx",
    "Name": "Virginia-Redshift",
    "DataSourceParameters": {
        "RedshiftParameters": {
            "Host": "20241106-workgroup.123456789012.us-east-1.redshift-serverless.amazonaws.com",
            "Port": 5439,
            "Database": "dev"
        }
    },
    "Credentials": {
        "SecretArn": "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:redshift!20241106-namespace-admin-xxxxx"
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": "arn:aws:quicksight:ap-northeast-1:123456789012:vpcConnection/abbc8e73-fe7a-4db4-8954-c71055bbab02"
    },
    "SslProperties": {
        "DisableSsl": false
    }
}

データソースは正常に更新されました。

▼実行結果

[cloudshell-user@ip-10-132-74-210 ~]$ aws quicksight update-data-source \
>   --cli-input-json file://update-data-source-secrets.json
{
    "Status": 202,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:datasource/92d8a982-3cfc-465d-b5ec-xxxxx",
    "DataSourceId": "92d8a982-3cfc-465d-b5ec-xxxxx",
    "UpdateStatus": "UPDATE_IN_PROGRESS",
    "RequestId": "38947b0d-21ec-4d61-8033-14509a4b4e36"
}
[cloudshell-user@ip-10-132-74-210 ~]$

GUI からデータソースを確認すると、正常に ap-northeast-1 のシークレットを参照しているようです。

また、分析の操作もできております。

Secrets Manager が QuickSight とは別リージョンにある場合、
QuickSight が有効化されているリージョンに Secrets Manager のシークレットをレプリケーションし、そのレプリケーションされたシークレットを参照することで接続可能になると理解いたしました。
(別リージョンのシークレットを直接参照することはできない理解です。)