MLflow dan Azure AD: Keamanan yang Nggak Lebay untuk Para Data Scientist
Siapa di sini yang hobi ngutak-ngatik model machine learning? Kalo kamu anak data, pasti familiar banget sama MLflow. Nah, biar kerjaanmu makin asik tanpa khawatir data bocor, penting banget buat nge-secure akses ke MLflow. Untungnya, Microsoft udah nyediain cara buat ngintegrasiin MLflow dengan Azure Active Directory (Azure AD). Jadi, kamu bisa login pake akun Microsoft kesayanganmu.
Biar gak kebanyakan basa-basi, mari kita langsung bahas gimana caranya bikin MLflow-mu aman sentosa.
1. Daftar Aplikasi di Azure AD: Gak Sesulit Daftar Gebetan
Pertama, kamu harus bikin aplikasi di Azure AD. Gak perlu khawatir, ini gak sesulit nyari kode diskon. Buka Azure Portal, masuk ke Azure Active Directory, pilih "App registrations", dan klik "New registration". Isi nama aplikasinya (bebas, sih, tapi saran aja, kasih nama yang gampang diingat, kayak "MLflow-ku").
Setelah itu, atur "Redirect URI" ke URL UI MLflow kamu. Contohnya, kalo MLflow-mu diakses di mlflow.example.com
, ya masukin itu. Terakhir, jangan lupa copy "Application (client) ID" dan "Directory (tenant) ID". Ini penting, jangan sampe salah catat.
2. Bikin Rahasia, Jangan Kasih Tau Siapa-Siapa
Selanjutnya, kita bakal bikin "client secret". Ini semacam password rahasia buat aplikasi MLflow-mu. Di bagian "Certificates & secrets", bikin secret baru. Catat baik-baik secret yang muncul. Ingat, secret ini harus dijaga ketat. Jangan sampe bocor ke tangan yang salah. Kalo sampai bocor, bisa berabe.
3. Kasih Izin Buat Main
Sekarang, kita kasih izin buat aplikasi kita. Di bagian "API Permissions", tambahin izin buat User.Read
, openid
, dan profile
. Jangan lupa, kalo perlu, kasih "Admin Consent". Ini penting biar aplikasi kita bisa baca informasi user, bukan informasi mantan.
4. Konfigurasi MLflow: Saatnya Meramu
Nah, sekarang saatnya "meramu" MLflow-mu. Kamu perlu setting environment variables di server MLflow. Ini langkah krusial, jadi perhatikan baik-baik.
export OAUTH2_AUTHORIZE_URL="https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize"
export OAUTH2_TOKEN_URL="https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
export OAUTH2_CLIENT_ID="{client_id}"
export OAUTH2_CLIENT_SECRET="{client_secret}"
Ganti {tenant_id}
, {client_id}
, dan {client_secret}
dengan informasi yang udah kamu dapetin sebelumnya. Setelah itu, jalankan MLflow server-mu.
mlflow server --backend-store-uri sqlite:///mlflow.db --host 0.0.0.0 --port 5000
Dengan ini, akses ke UI dan API MLflow-mu bakal lebih aman.
5. MLflow di Azure: Manfaatkan Kekuatan Managed Identity
Kalo MLflow-mu jalan di Azure VMs, AKS, atau App Service, kamu bisa pake Managed Identity. Lebih praktis, gak pake ribet urus credential lagi.
Aktifkan Managed Identity
Aktifkan Managed Identity di VM atau AKS-mu. Kalo di VM, pake perintah ini:
az vm identity assign -g myResourceGroup -n myVM
Kalo di AKS:
az aks update -g myResourceGroup -n myAKS --enable-managed-identity
Kasih Izin
Kasih izin "Reader" atau "Contributor" ke Managed Identity-mu. Jangan lupa kasih akses ke Azure ML atau Azure Storage, tempat MLflow artifacts disimpan.
Gunakan Managed Identity
Di dalam MLflow, dapatkan token.
from azure.identity import ManagedIdentityCredential
credential = ManagedIdentityCredential()
token = credential.get_token("https://management.azure.com/.default")
headers = {"Authorization": f"Bearer {token.token}"}
Lalu, gunakan token ini di API calls.
6. Autentikasi dengan Token Azure AD: Buat yang Suka Manual
Kalo kamu pake MLflow Python client (misalnya, di Jupyter Notebook), kamu bisa autentikasi pake token Azure AD.
Dapatkan Token
Login manual dulu.
az login
az account get-access-token --resource=https://mlflow.example.com
Gunakan Token
import mlflow
import requests
from azure.identity import InteractiveBrowserCredential
# Authenticate with Azure AD
credential = InteractiveBrowserCredential()
token = credential.get_token("https://mlflow.example.com")
# Set MLflow Tracking URI
mlflow.set_tracking_uri("https://mlflow.example.com")
mlflow.set_registry_uri("https://mlflow.example.com")
# Pass Authorization header
headers = {"Authorization": f"Bearer {token.token}"}
response = requests.get("https://mlflow.example.com/api/2.0/mlflow/experiments/list", headers=headers)
print(response.json())
Mudah, kan? Sekarang, MLflow-mu lebih aman.
7. Integrasi MLflow dengan Azure Machine Learning: Solusi All-in-One
Buat kamu yang pake Azure Machine Learning (Azure ML), MLflow udah terintegrasi secara native. Seru, kan?
Gunakan Azure ML Workspace
from azureml.core import Workspace
import mlflow
ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Jalankan Eksperimen
mlflow.start_run()
mlflow.log_metric("accuracy", 0.95)
mlflow.end_run()
Dengan cara ini, kamu bisa manfaatin semua fitur Azure ML sambil tetap pake MLflow. Praktis banget!
Intinya, dengan langkah-langkah di atas, kamu bisa nge-secure MLflow-mu dengan Azure AD. Jangan lupa, keamanan itu penting, tapi jangan sampe bikin hidupmu jadi ribet.