Otentikasi dengan Snowflake - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Otentikasi dengan Snowflake

Anda dapat mengonfigurasi konektor Amazon Athena Snowflake untuk menggunakan otentikasi pasangan kunci atau OAuth metode otentikasi untuk terhubung ke gudang data Snowflake Anda. Kedua metode menyediakan akses aman ke Snowflake dan menghilangkan kebutuhan untuk menyimpan kata sandi dalam string koneksi.

  • Otentikasi pasangan kunci — Metode ini menggunakan pasangan kunci publik atau pribadi RSA untuk mengautentikasi dengan Snowflake. Kunci privat secara digital menandatangani permintaan otentikasi sementara kunci publik terkait terdaftar di Snowflake untuk verifikasi. Metode ini menghilangkan penyimpanan kata sandi.

  • OAuth otentikasi — Metode ini menggunakan token otorisasi dan token penyegaran untuk mengautentikasi dengan Snowflake. Ini mendukung penyegaran token otomatis, sehingga cocok untuk aplikasi yang berjalan lama.

Untuk informasi selengkapnya, lihat otentikasi dan OAuth otentikasi pasangan kunci di panduan pengguna Snowflake.

Prasyarat

Sebelum menggunakan fungsi , pastikan untuk melengkapi prasyarat berikut:

  • Akses akun Snowflake dengan hak administratif.

  • Akun pengguna Snowflake yang didedikasikan untuk konektor Athena.

  • OpenSSL atau alat pembuat kunci yang setara untuk otentikasi pasangan kunci.

  • AWS Secrets Manager akses untuk membuat dan mengelola rahasia.

  • Browser web untuk menyelesaikan OAuth alur untuk OAuth otentikasi.

Konfigurasikan otentikasi pasangan kunci

Proses ini melibatkan pembuatan pasangan kunci RSA, mengonfigurasi akun Snowflake Anda dengan kunci publik, dan menyimpan kunci pribadi dengan aman. AWS Secrets Manager Langkah-langkah berikut akan memandu Anda dalam membuat kunci kriptografi, menyiapkan izin Snowflake yang diperlukan, dan mengonfigurasi AWS kredensi untuk otentikasi tanpa batas.

  1. Hasilkan pasangan kunci RSA

    Hasilkan key pair pribadi dan publik menggunakan OpenSSL.

    • Untuk menghasilkan versi yang tidak terenkripsi, gunakan perintah berikut di aplikasi baris perintah lokal Anda.

      openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    • Untuk menghasilkan versi terenkripsi, gunakan perintah berikut, yang menghilangkan. -nocrypt

      openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
    • Untuk menghasilkan kunci publik dari kunci pribadi.

      openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub # Set appropriate permissions (Unix/Linux) chmod 600 rsa_key.p8 chmod 644 rsa_key.pub
    catatan

    Jangan berbagi kunci pribadi Anda. Kunci pribadi seharusnya hanya dapat diakses oleh aplikasi yang perlu diautentikasi dengan Snowflake.

  2. Ekstrak konten kunci publik tanpa pembatas untuk Snowflake

    # Extract public key content (remove BEGIN/END lines and newlines) cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'

    Simpan output ini karena Anda akan membutuhkannya nanti di langkah berikutnya.

  3. Konfigurasikan pengguna Snowflake

    Ikuti langkah-langkah ini untuk mengkonfigurasi pengguna Snowflake.

    1. Buat pengguna khusus untuk konektor Athena jika belum ada.

      -- Create user for Athena connector CREATE USER athena_connector_user; -- Grant necessary privileges GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role; GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role; GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
    2. Berikan hak otentikasi. Untuk menetapkan kunci publik kepada pengguna, Anda harus memiliki salah satu peran atau hak istimewa berikut.

      • OWNERSHIPHak istimewa MODIFY PROGRAMMATIC AUTHENTICATION METHODS atau hak istimewa pada pengguna.

      • SECURITYADMINPeran atau lebih tinggi.

      Berikan hak istimewa yang diperlukan untuk menetapkan kunci publik dengan perintah berikut.

      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
    3. Tetapkan kunci publik ke pengguna Snowflake dengan perintah berikut.

      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';

      Verifikasi bahwa kunci publik berhasil ditetapkan ke pengguna dengan perintah berikut.

      DESC USER athena_connector_user;
  4. Simpan kunci pribadi di AWS Secrets Manager

    1. Konversikan kunci pribadi Anda ke format yang diperlukan oleh konektor.

      # Read private key content cat rsa_key.p8
    2. Buat rahasia AWS Secrets Manager dengan struktur berikut.

      { "sfUser": "your_snowflake_user", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)" }
      catatan
      • Header dan footer bersifat opsional.

      • Kunci privat harus dipisahkan oleh\n.

Konfigurasikan OAuth otentikasi

Metode otentikasi ini memungkinkan akses berbasis token yang aman ke Snowflake dengan kemampuan penyegaran kredenal otomatis. Proses konfigurasi melibatkan pembuatan integrasi keamanan di Snowflake, mengambil kredensi OAuth klien, menyelesaikan alur otorisasi untuk mendapatkan kode akses, dan menyimpan OAuth kredensil untuk konektor yang akan digunakan. AWS Secrets Manager

  1. Buat integrasi keamanan di Snowflake

    Jalankan perintah SQL berikut di Snowflake untuk membuat integrasi keamanan OAuth Snowflake.

    CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback' OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;

    Parameter konfigurasi

    • TYPE = OAUTH- Menentukan jenis OAuth otentikasi.

    • ENABLED = TRUE— Memungkinkan integrasi keamanan.

    • OAUTH_CLIENT = CUSTOM— Menggunakan konfigurasi OAuth klien kustom.

    • OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'— Menetapkan tipe klien untuk aplikasi yang aman.

    • OAUTH_REDIRECT_URI— URL callback untuk OAuth flow. Ini bisa menjadi localhost untuk pengujian.

    • OAUTH_ISSUE_REFRESH_TOKENS = TRUE— Mengaktifkan pembuatan token penyegaran.

    • OAUTH_REFRESH_TOKEN_VALIDITY = 7776000— Menetapkan validitas token refresh (90 hari dalam detik).

  2. Ambil rahasia OAuth klien

    1. Jalankan perintah SQL berikut untuk mendapatkan kredensil klien.

      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
    2. Ambil rahasia OAuth klien.

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');

      Contoh respon

      { "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY, "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE" }
    catatan

    Jaga kredensil ini aman dan jangan membagikannya. Ini akan digunakan untuk mengkonfigurasi OAuth klien.

  3. Otorisasi pengguna dan ambil kode otorisasi

    1. Buka URL berikut di browser.

      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
    2. Lengkapi aliran otorisasi.

      1. Masuk menggunakan kredensi Snowflake Anda.

      2. Berikan izin yang diminta. Anda akan diarahkan ke URI callback dengan kode otorisasi.

    3. Ekstrak kode otorisasi dengan menyalin parameter kode dari URL pengalihan.

      https://localhost:8080/oauth/callback?code=<authorizationcode>
      catatan

      Kode otorisasi berlaku untuk waktu yang terbatas dan hanya dapat digunakan sekali.

  4. Simpan OAuth kredensi di AWS Secrets Manager

    Buat rahasia AWS Secrets Manager dengan struktur berikut.

    { "redirect_uri": "https://localhost:8080/oauth/callback", "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request", "client_id": "AIDACKCEVSQ6C2EXAMPLE, "username": "your_snowflake_username", "auth_code": "authorizationcode" }

    Bidang yang diperlukan

    • redirect_uri— OAuth redirect URI yang Anda peroleh dari Langkah 1.

    • client_secret— Rahasia OAuth klien yang Anda peroleh dari Langkah 2.

    • token_url— Snowflake Titik akhir OAuth token.

    • client_id— ID OAuth klien dari Langkah 2.

    • username— Nama pengguna Snowflake untuk konektor.

    • auth_code— Kode otorisasi yang Anda peroleh dari Langkah 3.

Setelah Anda membuat rahasia, Anda mendapatkan ARN rahasia yang dapat Anda gunakan dalam koneksi Glue Anda ketika Anda membuat koneksi sumber data.