
Amazon QuickSightからパブリックアクセスを許可しないRedshift Serverlessへプライベート接続する
この記事は公開されてから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のフルマネージドサービスならではですね。このブログがどなたかのお役に立てれば幸いです。



















