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.
-nocryptopenssl 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 USERathena_connector_user; -- Grant necessary privileges GRANT USAGE ON WAREHOUSEyour_warehouseTO ROLEathena_connector_role; GRANT USAGE ON DATABASEyour_databaseTO ROLEathena_connector_role; GRANT SELECT ON ALL TABLES IN DATABASEyour_databaseTO ROLEathena_connector_role; Berikan hak otentikasi. Untuk menetapkan kunci publik kepada pengguna, Anda harus memiliki salah satu peran atau hak istimewa berikut.
-
OWNERSHIPHak istimewaMODIFY PROGRAMMATIC AUTHENTICATION METHODSatau 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 USERathena_connector_userTO ROLEyour_admin_role;-
-
Tetapkan kunci publik ke pengguna Snowflake dengan perintah berikut.
ALTER USERathena_connector_userSET RSA_PUBLIC_KEY='RSAkey';Verifikasi bahwa kunci publik berhasil ditetapkan ke pengguna dengan perintah berikut.
DESC USERathena_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 INTEGRATIONmy_snowflake_oauth_integration_aTYPE = 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.