SAP Datasphere에 연결

BigQuery 관리자는 SAP Datasphere 데이터에 액세스하기 위한 연결을 만들 수 있습니다. 이 연결을 사용하면 데이터 분석가는 SAP Datasphere에서 데이터를 쿼리할 수 있습니다.

시작하기 전에

  1. BigQuery Connection API 사용 설정하기

    API 사용 설정하기

  2. SAP Datasphere 데이터베이스 사용자를 만듭니다. BigQuery를 연결할 사용자 이름, 비밀번호, 호스트 이름, 포트를 기록해 둡니다.

  3. 다음 중 하나를 수행하여 선택한 IP 주소의 트래픽을 허용하도록 SAP Datasphere 테넌트를 구성합니다.

    • 모든 Google IP 주소 범위를 SAP Datasphere의 '신뢰할 수 있는 IP' 허용 목록에 추가합니다.
    • 허용 목록에 0.0.0.0/0을 추가하여 모든 IP 주소의 연결로 SAP Datasphere 테넌트를 엽니다.
    • BigQuery가 고정 IP 주소의 연결을 열 수 있도록 네트워크 연결로 연결을 구성합니다.

    SAP Datasphere 테넌트 구성에 대한 자세한 내용은 IP 허용 목록에 IP 주소 추가를 참조하세요.

필요한 역할

SAP Datasphere에 연결하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 연결 관리자(roles/bigquery.connectionAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

SAP Datasphere에 BigQuery 연결

Google Cloud 콘솔 또는 bq 명령줄 도구에서 BigQuery를 SAP Datasphere에 연결할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 패널에서 추가 추가를 클릭합니다.

  3. 검색창에서 외부 데이터 소스에 연결을 검색하여 선택합니다.

  4. 외부 데이터 소스 대화상자에서 다음을 수행합니다.

    • 연결 유형으로 SAP HANA를 선택합니다.
    • 연결 ID에 이 연결을 식별할 연결 ID를 입력합니다.
    • 위치 유형에서 SAP Datasphere의 데이터와 결합할 BigQuery 데이터 세트의 리전을 지정합니다. 이 연결을 사용하는 쿼리는 이 리전에서 실행해야 합니다.
    • (선택사항) 별칭에 사용자 친화적인 연결 이름(예: My connection resource)을 입력합니다. 사용자 친화적인 이름으로 나중에 수정해야 하는 경우 연결 리소스를 식별하는 데 도움이 되는 모든 값을 사용할 수 있습니다.
    • (선택사항) 설명에 이 연결 리소스에 대한 설명을 입력합니다.
    • 암호화에서 Google 관리 암호화 키 또는 고객 관리 암호화 키(CMEK)를 선택합니다. CMEK 사용은 선택사항입니다.
    • 호스트:포트 SAP Datasphere 웹 콘솔의 데이터베이스 사용자 세부정보에 표시된 것처럼 SAP 데이터베이스 인스턴스의 호스트 및 포트를 HOST:PORT 형식으로 입력합니다.
    • 선택사항: 네트워크 연결의 경우 SAP Datasphere 연결을 설정하는 데 사용되는 네트워크 구성을 정의하는 네트워크 연결 경로를 입력합니다.
    • 사용자 이름의 경우는, SAP Datasphere 웹 콘솔에서 데이터베이스 사용자 세부정보의 데이터베이스 사용자 이름을 입력합니다. 예를 들면 MY_SPACE#BIGQUERY입니다.
    • 비밀번호에는 데이터베이스 사용자의 비밀번호를 입력합니다.
  5. 연결 만들기를 클릭합니다.

bq

다음 플래그와 함께 bq mk 명령어를 입력합니다.

  bq mk \
  --connection \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  --connector_configuration '{
    "connector_id": "saphana",
    "endpoint": {
      "host_port": "HOST_PORT"
    },
    "authentication": {
      "username_password": {
        "username": "USERNAME",
        "password": {
          "plaintext": "PASSWORD"
        }
      }
    },
    "network": {
      "private_service_connect": {
        "network_attachment": "NETWORK_ATTACHMENT"
      }
    }
  }' \
  CONNECTION_ID

다음을 바꿉니다.

  • LOCATION: SAP Datasphere의 데이터와 결합할 BigQuery 데이터 세트의 리전을 지정합니다. 이 연결을 사용하는 쿼리는 이 리전에서 실행해야 합니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID를 입력합니다.
  • HOST_PORT: SAP Datasphere 웹 콘솔의 데이터베이스 사용자 세부정보에 표시된 대로 SAP 데이터베이스 인스턴스의 호스트와 포트를 HOST:PORT 형식으로 입력합니다.
  • NETWORK_ATTACHMENT(선택사항): 네트워크 연결projects/{project}/regions/{region}/networkAttachments/{networkattachment} 형식으로 입력합니다. 이 필드를 사용하면 BigQuery가 고정 IP 주소에서 연결을 열도록 SAP Datasphere 연결을 구성할 수 있습니다.
  • USERNAME: SAP Datasphere 웹 콘솔에서 데이터베이스 사용자 세부정보의 데이터베이스 사용자 이름을 입력합니다. 예를 들면 MY_SPACE#BIGQUERY입니다.
  • PASSWORD: 데이터베이스 사용자의 비밀번호를 입력합니다.
  • CONNECTION_ID: 이 연결을 식별할 연결 ID를 입력합니다.

사용자와 연결 공유

데이터를 쿼리하고 연결을 관리할 수 있도록 사용자에게 다음 역할을 부여할 수 있습니다.

  • roles/bigquery.connectionUser: 사용자가 연결을 사용하여 외부 데이터 소스에 연결하고 쿼리를 실행할 수 있습니다.

  • roles/bigquery.connectionAdmin: 사용자가 연결을 관리할 수 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.

다음 옵션 중 하나를 선택합니다.

콘솔

  1. BigQuery 페이지로 이동합니다.

    BigQuery로 이동

    이러한 연결은 프로젝트의 외부 연결 그룹에 나열됩니다.

  2. 탐색기 창에서 프로젝트 이름 > 외부 연결 > 연결을 클릭합니다.

  3. 세부정보 창에서 공유를 클릭하여 연결을 공유합니다. 다음 작업을 수행합니다.

    1. 연결 권한 대화상자에서 주 구성원을 추가하거나 수정하여 다른 주 구성원과 연결을 공유합니다.

    2. 저장을 클릭합니다.

bq

bq 명령줄 도구로 연결을 공유할 수 없습니다. 연결을 공유하려면 Google Cloud 콘솔 또는 BigQuery Connections API 메서드를 사용하여 연결을 공유합니다.

API

BigQuery 연결 REST API 참조 섹션의 projects.locations.connections.setIAM 메서드를 사용하고 policy 리소스의 인스턴스를 지정합니다.

Java

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

다음 단계