Amazon QuickSightからパブリックアクセスを許可しないRedshift Serverlessへプライベート接続する

QuickSightからデータソースへプライベート接続する際はVPC接続を設定します
2023.05.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部インテグレーション部コンサルティングチーム、新納(にいの)です。

ゴールデンウィークも明けた今日この頃、皆様におかれましてはAmazon QuickSightからパブリックアクセスを許可していないRedshift Serverlessにプライベート接続したくなってくる頃合いかと存じます。というわけでやっていきましょう。

構成

今回の構成は以下の通り。

必要な設定

Amzon QuickSight用ENIセキュリティグループ

QuickSightが対象となるVPCのサブネット上にElastic Network Interface(以下、ENI)を自動生成します。このENIにアタッチするセキュリティグループでRedshift Serverlessへの通信を許可します。

Redshift Serverlessのセキュリティグループにルール追加

QuickSightからのインバウンドアクセスを許可するルールを追加します。

Amazon QuickSightでのVPC接続設定

QuickSightからインターネットを経由せずデータソースと接続するには、VPC接続を利用します。先日のアップデートにより、最低2つ以上のAvailability Zone(以下、AZ)の指定が必須となりました。

設定する

Amzon QuickSight用ENIセキュリティグループ作成

インバウンドルール

ソースにRedshift Serverlessにアタッチされたセキュリティグループを指定し、すべてのトラフィックを許可します。

アウトバウンドルール

ソースにRedshift Serverlessにアタッチされたセキュリティグループを指定し、Redshift Serverlessのポートをへのアウトバウンドアクセスを許可します。

Redshift Serverlessのセキュリティグループにルール追加

上記で作成したQuickSight用のENIのセキュリティーグループをソースに指定し、Redshift Serverlessのポートへのアクセスを許可します。

実行ロールの作成

QuickSightからVPC接続を設定する際にIAMロールの指定が必要となります。以下ドキュメントに従って設定していきましょう。

Configuring the VPC connection in the QuickSight console - Amazon QuickSight

信頼されたエンティティではカスタム信頼ポリシーを選択し、以下の通りQuickSightを信頼するよう記述します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "quicksight.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

カスタムポリシーとして以下を指定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}

Amazon QuickSightでVPC接続設定

QuickSightの管理画面からVPC接続の管理へ遷移し、「VPC接続の追加」から設定を開始します。

設定画面は以下の通り指定します。

項目
VPC接続名 任意(データセットの作成時に表示される名前)
VPC ID Redshift Serverlessが配置されているVPC
実行ロール 上記で作成したIAMロール
サブネットID Redshift Serverlessが配置されているサブネット
セキュリティグループID QuickSight用ENIのセキュリティグループ

追加するとQuickSightのコンソール画面上から確認可能です。VPC接続追加後、ENIを作成します。このステータスがAVAILABLEになるとデータセット作成時にVPC接続を選べるようになります。

データセットを作成する

ここまででVPC接続の準備は整いました。さっそくQuickSightのコンソール画面からデータセットを作成し、Redshift ServerlessへVPC接続してみましょう。

データセット作成画面からRedshift(手動接続)を選択します。

設定画面で以下の通り値を入力します。

項目
データソース名 任意の名前
接続タイプ 作成したVPC接続名
データベースサーバー Redshift Serverlessのエンドポイント名<名前空間>.<AWSアカウントID>.<リージョン>.redshift-serverless.amazonaws.comの形
ポート 5439
データベース名 Redshift Serverlessのデータベース名
ユーザー名 Redshift Serverlessのユーザー名
パスワード Redshift Serverlessのパスワード

もし接続タイプに「パブリックアクセス」のみ表示されている場合、QuickSight用ENIの作成が完了していない可能性があります。VPC接続の画面からステータスを確認し、AVAILABLEになるまで待ってから再度試してみてください。

最後に

QuickSightからRedshift ServerlessにVPC接続する方法のご紹介でした。非VPCリソースであるQuickSightですが、プライベート接続を比較的簡単に設定できるのはAWSのフルマネージドサービスならではですね。このブログがどなたかのお役に立てれば幸いです。

参考情報