Amazon AWS

Amazon QuickSight에서 RDS/Redshift에 Private 연결

홍띠 2024. 6. 16. 20:55
QuickSight에서는 RDS/Athena/Redshift 등을 통한 여러가지 소스데이터와의 통합을 지원한다.
그 중 RDS나 Redshift 같이 인스턴스를 띄워서 사용하는 데이터 소스들이 있는데, 만약 이 데이터베이스가 프라이빗 서브넷에 배치되어 있고 퍼블릭 접근이 불가능 하도록 설정되어 있다면, 추가적으로 vpc connection을 생성해서 접근해야 한다.

Prerequisites

  • QuickSight를 설정하려는 사용자가 Quicksight의 관리자여야 한다. Quicksight에 기본적으로 설정된 Admin인 경우에는 문제없이 진행 가능하다. 만약, custom permission을 사용한다면, 아래의 권한들이 포함되어 있는지 확인해야 한다.
"quicksight:ListVPCConnections"
"quicksight:CreateVPCConnection"
"quicksight:DescribeVPCConnection"
"quicksight:DeleteVPCConnection"
"quicksight:UpdateVPCConnection"
"ec2:describeSubnets"
"ec2:describeVpcs"
"ec2:describeSecurityGroups"
"iam:ListRoles"
"iam:PassRole" ("iam:PassRole"은 이후에 생성할 실행역할에 대해서만 resource를 제한해도 된다.)
  • 아래 예제에서 연결하고자 하는 RDS/Redshift는 동일한 계정내에 존재한다.

보안그룹 생성

  • QuickSight에서 사용할 보안그룹을 생성한다.
    - Inbound 규칙:
       모든 TCP를 허용하되, 소스는 RDS/Redshift에서 사용하는 보안그룹을 설정한다.
    - Outbound 규칙: 
       RDS/Redshift 에서 사용하는 포트를 Port 범위로 설정하고, 소스는 동일하게 RDS/Redshift에서 사용하는 보안그룹을 설정한다.
  • RDS/Redshift에서 사용하는 보안그룹을 편집한다.
    - Inbound 규칙: RDS/Redshift 에서 사용하는 포트를 Port 범위로 설정하고, 소스는 위에서 생성한 Quicksight에서 사용할 보안그룹을 설정한다
    - Outbound 규칙: 
     모든 TCP를 허용하되, 소스는 위에서 생성한 Quicksight에서 사용할 보안그룹을 설정한다.

실행역할 생성

QuickSight의 VPC Connection에 연결할 실행역할을 생성한다. 여기서는 Quikcsight 생성과 함께 만들어진 service-role의 권한을 편집해서 필요 권한을 추가했다.

  • 필요 권한
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}
  • 신뢰정책
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "quicksight.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

 

VPC Connection 생성

  • Quicksight 콘솔에 접속 → 오른쪽 위 상단에 프로필 버튼 → QuickSight 관리
  • (만약, 이 버튼이 안보이면 관리 권한이 없는 것)
  • Manage VPC connections → Add VPC Connection
  • 필요 값 입력
    • VPC connection name: 연결 이름 작성
    • VPC ID: RDS/Redshift가 있는 VPC ID 선택
    • Execution Role: 위에서 생성/편집한 실행역할 선택
    • Subnets: 최소 2개 이상 선택

Dataset연결

  • QuicSight 콘솔 → Datasets 선택 → New Dataset
  • auto-discovered Redshift 선택 후 필요 값 입력
    • Data Source Name: 데이터소스 이름 입력
    • Instance ID: 연결을 원하는인스턴스 선택
    • Connection Type: 위에서 생성한 VPC Conneciton 선택
    • Database Name: 연결을 원하는 데이터베이스 입력
    • Username/Password: 접속 정보 입력
  • Validate Connection으로 확인 후 연결

참고:

https://repost.aws/knowledge-center/quicksight-redshift-private-connection

https://docs.aws.amazon.com/ko_kr/quicksight/latest/user/vpc-creating-a-connection-in-quicksight-console.html