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
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.
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.
-
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.
-
Konfigurasikan pengguna Snowflake
Ikuti langkah-langkah ini untuk mengkonfigurasi pengguna Snowflake.
-
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 WAREHOUSEyour_warehouse
TO ROLEathena_connector_role
; GRANT USAGE ON DATABASEyour_database
TO ROLEathena_connector_role
; GRANT SELECT ON ALL TABLES IN DATABASEyour_database
TO ROLEathena_connector_role
; Berikan hak otentikasi. Untuk menetapkan kunci publik kepada pengguna, Anda harus memiliki salah satu peran atau hak istimewa berikut.
-
OWNERSHIP
Hak istimewaMODIFY PROGRAMMATIC AUTHENTICATION METHODS
atau hak istimewa pada pengguna. -
SECURITYADMIN
Peran 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 ROLEyour_admin_role
;-
-
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
;
-
Simpan kunci pribadi di AWS Secrets Manager
Konversikan kunci pribadi Anda ke format yang diperlukan oleh konektor.
# Read private key content cat rsa_key.p8
-
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
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).
-
Ambil rahasia OAuth klien
-
Jalankan perintah SQL berikut untuk mendapatkan kredensil klien.
DESC SECURITY INTEGRATION '
MY_SNOWFLAKE_OAUTH_INTEGRATION_A
'; 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.
-
Otorisasi pengguna dan ambil kode otorisasi
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/callbackLengkapi aliran otorisasi.
-
Masuk menggunakan kredensi Snowflake Anda.
-
Berikan izin yang diminta. Anda akan diarahkan ke URI callback dengan kode otorisasi.
-
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.
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.