Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda menyebarkan aplikasi Yelb ke kluster Azure Kubernetes Service (AKS) yang Anda buat di artikel previous.
Memeriksa lingkungan
Sebelum Anda menyebarkan aplikasi, pastikan kluster AKS Anda dikonfigurasi dengan benar menggunakan perintah berikut:
Cantumkan namespace di kluster Anda menggunakan
kubectl get namespaceperintah .kubectl get namespaceJika Anda memasang pengontrol ingress NGINX dengan menggunakan tambahan perutean aplikasi, Anda seharusnya melihat
app-routing-systemnamespace dalam output.NAME STATUS AGE app-routing-system Active 4h28m cert-manager Active 109s dapr-system Active 4h18m default Active 4h29m gatekeeper-system Active 4h28m kube-node-lease Active 4h29m kube-public Active 4h29m kube-system Active 4h29mJika Anda menginstal kontroler masuk NGINX menggunakan Helm, Anda seharusnya melihat namespace
ingress-basicdi output tersebut.NAME STATUS AGE cert-manager Active 7m42s dapr-system Active 11m default Active 21m gatekeeper-system Active 20m ingress-basic Active 7m19s kube-node-lease Active 21m kube-public Active 21m kube-system Active 21m prometheus Active 8m9sDapatkan detail layanan dari namespace
app-routing-systematauingress-basicmenggunakankubectl get service command.kubectl get service --namespace <namespace-name> -o wideJika Anda menggunakan add-on perutean aplikasi, Anda seharusnya melihat bahwa layanan
EXTERNAL-IPmemiliki alamat IP privatnginx. Alamat ini adalah IP privat dari konfigurasi frontend IP di penyeimbang beban privatkubernetes-internalkluster AKS Anda.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx LoadBalancer 172.16.55.104 10.240.0.7 80:31447/TCP,443:31772/TCP,10254:30459/TCP 4h28m app=nginxJika Anda menggunakan Helm, Anda akan melihat
EXTERNAL-IPdari layanannginx-ingress-ingress-nginx-controlleradalah alamat IP pribadi. Ini adalah alamat IP pribadi dari konfigurasi IP frontend di load balancer privatkubernetes-internaldalam kluster AKS Anda.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-ingress-ingress-nginx-controller LoadBalancer 172.16.42.152 10.240.0.7 80:32117/TCP,443:32513/TCP 7m31s nginx-ingress-ingress-nginx-controller-admission ClusterIP 172.16.78.85 <none> 443/TCP 7m31s nginx-ingress-ingress-nginx-controller-metrics ClusterIP 172.16.109.138 <none> 10254/TCP 7m31s
Bersiap untuk menyebarkan aplikasi Yelb
Jika Anda ingin menyebarkan sampel menggunakan penghentian TLS di Application Gateway dan pemanggilan Yelb melalui pendekatan HTTP , Anda dapat menemukan skrip Bash dan templat YAML untuk menyebarkan aplikasi Yelb di http folder.
Jika Anda ingin menyebarkan sampel menggunakan Menimplementasi TLS end-to-end menggunakan arsitektur Azure Application Gateway, Anda dapat menemukan skrip Bash dan templat YAML untuk menyebarkan aplikasi web di folder https.
Di bagian lain dari artikel ini, kami memandu Anda melalui proses penyebaran aplikasi sampel menggunakan pendekatan TLS end-to-end.
Menyesuaikan variabel
Sebelum menjalankan skrip apa pun, Anda perlu menyesuaikan nilai variabel dalam
00-variables.shfile. File ini disertakan dalam semua skrip dan berisi variabel berikut:# Azure subscription and tenant RESOURCE_GROUP_NAME="<aks-resource-group>" SUBSCRIPTION_ID="$(az account show --query id --output tsv)" SUBSCRIPTION_NAME="$(az account show --query name --output tsv)" TENANT_ID="$(az account show --query tenantId --output tsv)" AKS_CLUSTER_NAME="<aks-name>" AGW_NAME="<application-gateway-name>" AGW_PUBLIC_IP_NAME="<application-gateway-public-ip-name>" DNS_ZONE_NAME="<your-azure-dns-zone-name-eg-contoso.com>" DNS_ZONE_RESOURCE_GROUP_NAME="<your-azure-dns-zone-resource-group-name>" DNS_ZONE_SUBSCRIPTION_ID="<your-azure-dns-zone-subscription-id>" # NGINX ingress controller installed via Helm NGINX_NAMESPACE="ingress-basic" NGINX_REPO_NAME="ingress-nginx" NGINX_REPO_URL="https://kubernetes.github.io/ingress-nginx" NGINX_CHART_NAME="ingress-nginx" NGINX_RELEASE_NAME="ingress-nginx" NGINX_REPLICA_COUNT=3 # Specify the ingress class name for the ingress controller # - nginx: Unmanaged NGINX ingress controller installed via Helm # - webapprouting.kubernetes.azure.com: Managed NGINX ingress controller installed via AKS application routing add-on INGRESS_CLASS_NAME="webapprouting.kubernetes.azure.com" # Subdomain of the Yelb UI service SUBDOMAIN="<yelb-application-subdomain>" # URL of the Yelb UI service URL="https://$SUBDOMAIN.$DNS_ZONE_NAME" # Secret provider class KEY_VAULT_NAME="<key-vault-name>" KEY_VAULT_CERTIFICATE_NAME="<key-vault-resource-group-name>" KEY_VAULT_SECRET_PROVIDER_IDENTITY_CLIENT_ID="<key-vault-secret-provider-identity-client-id>" TLS_SECRET_NAME="yelb-tls-secret" NAMESPACE="yelb"Anda dapat menjalankan perintah az aks show berikut untuk mengambil
clientIdidentitas terkelola yang ditetapkan oleh pengguna yang digunakan oleh Azure Key Vault Provider untuk Secrets Store CSI Driver. ModulkeyVault.bicepperan Administrator Key Vault ke identitas terkelola yang ditetapkan pengguna dari addon untuk memungkinkannya mengambil sertifikat yang digunakan oleh Ingress Kubernetes untuk mengekspos layananyelb-uimelalui pengontrol ingress NGINX.az aks show \ --name <aks-name> \ --resource-group <aks-resource-group-name> \ --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId \ --output tsv \ --only-show-errorsJika Anda menyebarkan infrastruktur Azure menggunakan modul Bicep yang disediakan dengan sampel ini, Anda dapat melanjutkan ke menyebarkan aplikasi Yelb. Jika Anda ingin menyebarkan aplikasi di kluster AKS, Anda dapat menggunakan skrip berikut untuk mengonfigurasi lingkungan Anda. Anda dapat menggunakan
02-create-nginx-ingress-controller.shuntuk menginstal pengontrol ingress NGINX dengan firewall aplikasi web sumber terbuka ModSecurity (WAF) diaktifkan.#!/bin/bash # Variables source ./00-variables.sh # Check if the NGINX ingress controller Helm chart is already installed result=$(helm list -n $NGINX_NAMESPACE | grep $NGINX_RELEASE_NAME | awk '{print $1}') if [[ -n $result ]]; then echo "[$NGINX_RELEASE_NAME] NGINX ingress controller release already exists in the [$NGINX_NAMESPACE] namespace" else # Check if the NGINX ingress controller repository is not already added result=$(helm repo list | grep $NGINX_REPO_NAME | awk '{print $1}') if [[ -n $result ]]; then echo "[$NGINX_REPO_NAME] Helm repo already exists" else # Add the NGINX ingress controller repository echo "Adding [$NGINX_REPO_NAME] Helm repo..." helm repo add $NGINX_REPO_NAME $NGINX_REPO_URL fi # Update your local Helm chart repository cache echo 'Updating Helm repos...' helm repo update # Deploy NGINX ingress controller echo "Deploying [$NGINX_RELEASE_NAME] NGINX ingress controller to the [$NGINX_NAMESPACE] namespace..." helm install $NGINX_RELEASE_NAME $NGINX_REPO_NAME/$nginxChartName \ --create-namespace \ --namespace $NGINX_NAMESPACE \ --set controller.nodeSelector."kubernetes\.io/os"=linux \ --set controller.replicaCount=$NGINX_REPLICA_COUNT \ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz fi # Get values helm get values $NGINX_RELEASE_NAME --namespace $NGINX_NAMESPACE
Menyebarkan aplikasi
Jalankan skrip berikut
03-deploy-yelb.shuntuk menyebarkan aplikasi Yelb dan objek Kubernetes Ingress untuk membuatyelb-uilayanan dapat diakses oleh internet publik.#!/bin/bash # Variables source ./00-variables.sh # Check if namespace exists in the cluster result=$(kubectl get namespace -o jsonpath="{.items[?(@.metadata.name=='$NAMESPACE')].metadata.name}") if [[ -n $result ]]; then echo "$NAMESPACE namespace already exists in the cluster" else echo "$NAMESPACE namespace does not exist in the cluster" echo "creating $NAMESPACE namespace in the cluster..." kubectl create namespace $NAMESPACE fi # Create the Secret Provider Class object echo "Creating the secret provider class object..." cat <<EOF | kubectl apply -f - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: namespace: $NAMESPACE name: yelb spec: provider: azure secretObjects: - secretName: $TLS_SECRET_NAME type: kubernetes.io/tls data: - objectName: $KEY_VAULT_CERTIFICATE_NAME key: tls.key - objectName: $KEY_VAULT_CERTIFICATE_NAME key: tls.crt parameters: usePodIdentity: "false" useVMManagedIdentity: "true" userAssignedIdentityID: $KEY_VAULT_SECRET_PROVIDER_IDENTITY_CLIENT_ID keyvaultName: $KEY_VAULT_NAME objects: | array: - | objectName: $KEY_VAULT_CERTIFICATE_NAME objectType: secret tenantId: $TENANT_ID EOF # Apply the YAML configuration kubectl apply -f yelb.yml echo "waiting for secret $TLS_SECRET_NAME in namespace $namespace..." while true; do if kubectl get secret -n $NAMESPACE $TLS_SECRET_NAME >/dev/null 2>&1; then echo "secret $TLS_SECRET_NAME found!" break else printf "." sleep 3 fi done # Create chat-ingress cat ingress.yml | yq "(.spec.ingressClassName)|="\""$INGRESS_CLASS_NAME"\" | yq "(.spec.tls[0].hosts[0])|="\""$SUBDOMAIN.$DNS_ZONE_NAME"\" | yq "(.spec.tls[0].secretName)|="\""$TLS_SECRET_NAME"\" | yq "(.spec.rules[0].host)|="\""$SUBDOMAIN.$DNS_ZONE_NAME"\" | kubectl apply -f - # Check the deployed resources within the yelb namespace: kubectl get all -n yelbPerbarui manifes YAML
yelb-uiuntuk menyertakan definisicsi volumedanvolume mountuntuk membaca sertifikat sebagai rahasia dari Azure Key Vault.
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: yelb
name: yelb-ui
spec:
replicas: 1
selector:
matchLabels:
app: yelb-ui
tier: frontend
template:
metadata:
labels:
app: yelb-ui
tier: frontend
spec:
containers:
- name: yelb-ui
image: mreferre/yelb-ui:0.7
ports:
- containerPort: 80
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: yelb
Anda sekarang dapat menyebarkan aplikasi. Skrip menggunakan
yelb.ymlmanifes YAML untuk menyebarkan aplikasi daningress.ymluntuk membuat objek ingress. Jika Anda menggunakan zona DNS Publik Azure untuk resolusi nama domain, Anda dapat menggunakan skrip04-configure-dns.sh. Skrip ini mengaitkan alamat IP publik dari pengendali ingress NGINX dengan domain yang digunakan oleh objek ingress, yang layananyelb-ui-nya diekspos. Skrip melakukan langkah-langkah berikut:- Mengambil alamat publik dari IP publik Azure yang digunakan oleh konfigurasi IP front-end dari Application Gateway.
- Memeriksa apakah terdapat catatan
Auntuk subdomain yang digunakan oleh layananyelb-ui. -
AJika rekaman tidak ada, skrip akan membuatnya.
source ./00-variables.sh
# Get the address of the Application Gateway Public IP
echo "Retrieving the address of the [$AGW_PUBLIC_IP_NAME] public IP address of the [$AGW_NAME] Application Gateway..."
PUBLIC_IP_ADDRESS=$(az network public-ip show \
--resource-group $RESOURCE_GROUP_NAME \
--name $AGW_PUBLIC_IP_NAME \
--query ipAddress \
--output tsv \
--only-show-errors)
if [[ -n $PUBLIC_IP_ADDRESS ]]; then
echo "[$PUBLIC_IP_ADDRESS] public IP address successfully retrieved for the [$AGW_NAME] Application Gateway"
else
echo "Failed to retrieve the public IP address of the [$AGW_NAME] Application Gateway"
exit
fi
# Check if an A record for todolist subdomain exists in the DNS Zone
echo "Retrieving the A record for the [$SUBDOMAIN] subdomain from the [$DNS_ZONE_NAME] DNS zone..."
IPV4_ADDRESS=$(az network dns record-set a list \
--zone-name $DNS_ZONE_NAME \
--resource-group $DNS_ZONE_RESOURCE_GROUP_NAME \
--subscription $DNS_ZONE_SUBSCRIPTION_ID \
--query "[?name=='$SUBDOMAIN'].ARecords[].IPV4_ADDRESS" \
--output tsv \
--only-show-errors)
if [[ -n $IPV4_ADDRESS ]]; then
echo "An A record already exists in [$DNS_ZONE_NAME] DNS zone for the [$SUBDOMAIN] subdomain with [$IPV4_ADDRESS] IP address"
if [[ $IPV4_ADDRESS == $PUBLIC_IP_ADDRESS ]]; then
echo "The [$IPV4_ADDRESS] ip address of the existing A record is equal to the ip address of the ingress"
echo "No additional step is required"
continue
else
echo "The [$IPV4_ADDRESS] ip address of the existing A record is different than the ip address of the ingress"
fi
# Retrieving name of the record set relative to the zone
echo "Retrieving the name of the record set relative to the [$DNS_ZONE_NAME] zone..."
RECORDSET_NAME=$(az network dns record-set a list \
--zone-name $DNS_ZONE_NAME \
--resource-group $DNS_ZONE_RESOURCE_GROUP_NAME \
--subscription $DNS_ZONE_SUBSCRIPTION_ID \
--query "[?name=='$SUBDOMAIN'].name" \
--output tsv \
--only-show-errors 2>/dev/null)
if [[ -n $RECORDSET_NAME ]]; then
echo "[$RECORDSET_NAME] record set name successfully retrieved"
else
echo "Failed to retrieve the name of the record set relative to the [$DNS_ZONE_NAME] zone"
exit
fi
# Remove the A record
echo "Removing the A record from the record set relative to the [$DNS_ZONE_NAME] zone..."
az network dns record-set a remove-record \
--ipv4-address $IPV4_ADDRESS \
--record-set-name $RECORDSET_NAME \
--zone-name $DNS_ZONE_NAME \
--resource-group $DNS_ZONE_RESOURCE_GROUP_NAME \
--subscription $DNS_ZONE_SUBSCRIPTION_ID \
--only-show-errors 1>/dev/null
if [[ $? == 0 ]]; then
echo "[$IPV4_ADDRESS] ip address successfully removed from the [$RECORDSET_NAME] record set"
else
echo "Failed to remove the [$IPV4_ADDRESS] ip address from the [$RECORDSET_NAME] record set"
exit
fi
fi
# Create the A record
echo "Creating an A record in [$DNS_ZONE_NAME] DNS zone for the [$SUBDOMAIN] subdomain with [$PUBLIC_IP_ADDRESS] IP address..."
az network dns record-set a add-record \
--zone-name $DNS_ZONE_NAME \
--resource-group $DNS_ZONE_RESOURCE_GROUP_NAME \
--subscription $DNS_ZONE_SUBSCRIPTION_ID \
--record-set-name $SUBDOMAIN \
--ipv4-address $PUBLIC_IP_ADDRESS \
--only-show-errors 1>/dev/null
if [[ $? == 0 ]]; then
echo "A record for the [$SUBDOMAIN] subdomain with [$PUBLIC_IP_ADDRESS] IP address successfully created in [$DNS_ZONE_NAME] DNS zone"
else
echo "Failed to create an A record for the $SUBDOMAIN subdomain with [$PUBLIC_IP_ADDRESS] IP address in [$DNS_ZONE_NAME] DNS zone"
fi
Nota
Sebelum menyebarkan aplikasi Yelb dan membuat objek ingress, skrip menghasilkan SecretProviderClass untuk mengambil sertifikat TLS dari Azure Key Vault dan menghasilkan rahasia Kubernetes untuk objek ingress. Penting untuk dicatat bahwa Driver CSI Secrets Store untuk Key Vault membuat rahasia Kubernetes yang berisi sertifikat TLS hanya jika SecretProviderClass dan definisi volume disertakan dalam deployment. Untuk memastikan sertifikat TLS diambil dengan benar dari Azure Key Vault dan disimpan dalam rahasia Kubernetes yang digunakan oleh objek ingress, kita perlu melakukan modifikasi berikut pada manifes YAML dari penyebaran yelb-ui:
- Tambahkan definisi
csi volumemenggunakan driversecrets-store.csi.k8s.io, yang mereferensikan objekSecretProviderClassyang bertanggung jawab untuk mengambil sertifikat TLS dari Azure Key Vault. - Sertakan
volume mountuntuk membaca sertifikat sebagai rahasia dari Azure Key Vault.
Untuk informasi selengkapnya, lihat Menyiapkan Secrets Store CSI Driver untuk mengaktifkan pengontrol ingress NGINX dengan TLS.
Uji aplikasi
05-call-yelb-ui.sh Gunakan skrip untuk memanggil yelb-ui layanan, mensimulasikan injeksi SQL, serangan XSS, dan mengamati bagaimana sekumpulan aturan terkelola ModSecurity memblokir permintaan berbahaya.
#!/bin/bash
# Variables
source ./00-variables.sh
# Call REST API
echo "Calling Yelb UI service at $URL..."
curl -w 'HTTP Status: %{http_code}\n' -s -o /dev/null $URL
# Simulate SQL injection
echo "Simulating SQL injection when calling $URL..."
curl -w 'HTTP Status: %{http_code}\n' -s -o /dev/null $URL/?users=ExampleSQLInjection%27%20--
# Simulate XSS
echo "Simulating XSS when calling $URL..."
curl -w 'HTTP Status: %{http_code}\n' -s -o /dev/null $URL/?users=ExampleXSS%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E
# A custom rule blocks any request with the word blockme in the querystring.
echo "Simulating query string manipulation with the 'blockme' word in the query string..."
curl -w 'HTTP Status: %{http_code}\n' -s -o /dev/null $URL/?users?task=blockme
Skrip Bash harus menghasilkan output berikut, di mana panggilan pertama berhasil, sementara aturan ModSecurity memblokir dua panggilan berikut:
Calling Yelb UI service at https://yelb.contoso.com...
HTTP Status: 200
Simulating SQL injection when calling https://yelb.contoso.com...
HTTP Status: 403
Simulating XSS when calling https://yelb.contoso.com...
HTTP Status: 403
Simulating query string manipulation with the 'blockme' word in the query string...
HTTP Status: 403
Memantau aplikasi
Dalam solusi yang diusulkan, proses penyebaran secara otomatis mengonfigurasi sumber daya Azure Application Gateway untuk mengumpulkan log dan metrik diagnostik ke Azure Log Analytics Workspace. Dengan mengaktifkan log, Anda dapat memperoleh wawasan berharga tentang penilaian, kecocokan, dan pemblokiran yang dilakukan oleh Azure Web Application Firewall (WAF) dalam Application Gateway. Untuk informasi selengkapnya, lihat Log diagnostik untuk Application Gateway. Anda juga dapat menggunakan Log Analytics untuk memeriksa data dalam log firewall. Saat Anda memiliki log firewall di ruang kerja Log Analytics, Anda dapat melihat data, menulis kueri, membuat visualisasi, dan menambahkannya ke dasbor portal Anda. Untuk informasi terperinci tentang kueri log, lihat Gambaran umum kueri log di Azure Monitor.
Menjelajahi data dengan kueri Kusto
Dalam solusi yang diusulkan, proses penyebaran secara otomatis mengonfigurasi sumber daya Azure Application Gateway untuk mengumpulkan log diagnostik dan metrik ke ruang kerja Azure Log Analytics. Dengan mengaktifkan log, Anda dapat memperoleh wawasan tentang penilaian, pencocokan, dan pemblokiran yang dilakukan oleh Azure Web Application Firewall (WAF) dalam Application Gateway. Untuk informasi selengkapnya, lihat Log diagnostik untuk Application Gateway.
Anda juga dapat menggunakan Log Analytics untuk memeriksa data dalam log firewall. Saat Anda memiliki log firewall di ruang kerja Log Analytics, Anda dapat melihat data, menulis kueri, membuat visualisasi, dan menambahkannya ke dasbor portal Anda. Untuk informasi selengkapnya tentang kueri log, lihat Gambaran umum kueri log di Azure Monitor.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| limit 10
Atau, saat bekerja dengan tabel Khusus sumber daya , data log firewall mentah dapat diakses menggunakan kueri berikut. Untuk mempelajari selengkapnya tentang tabel khusus sumber daya, lihat dokumentasi referensi data Pemantauan .
AGWFirewallLogs
| limit 10
Setelah memiliki data, Anda dapat mempelajari lebih dalam dan membuat grafik atau visualisasi. Berikut adalah beberapa contoh tambahan kueri KQL yang dapat digunakan:
Permintaan yang dicocokkan/diblokir berdasarkan IP
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by clientIp_s, bin(TimeGenerated, 1m)
| render timechart
Permintaan yang Dicocokkan/Diblokir berdasarkan URI
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by requestUri_s, bin(TimeGenerated, 1m)
| render timechart
Aturan yang paling sesuai
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by ruleId_s, bin(TimeGenerated, 1m)
| where count_ > 10
| render timechart
Lima grup aturan teratas yang paling cocok
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize Count=count() by details_file_s, action_s
| top 5 by Count desc
| render piechart
Meninjau sumber daya yang disebarkan
Anda dapat menggunakan Azure CLI atau Azure PowerShell untuk mencantumkan sumber daya yang disebarkan dalam grup sumber daya.
Cantumkan sumber daya yang disebarkan dalam grup sumber daya menggunakan perintah [az resource list][az-resource-list].
az resource list --resource-group <resource-group-name>
Anda dapat menggunakan Azure CLI atau Azure PowerShell untuk menghapus grup sumber daya ketika Anda tidak lagi memerlukan sumber daya yang Anda buat dalam tutorial ini.
Hapus grup sumber daya dan sumber daya terkait menggunakan az group delete perintah .
az group delete --name <resource-group-name>
Langkah berikutnya
Anda dapat meningkatkan keamanan dan perlindungan ancaman solusi menggunakan Azure DDoS Protection dan Azure Firewall. Untuk informasi lebih lanjut, baca artikel berikut:
- Tutorial: Lindungi gateway aplikasi Anda dengan Azure DDoS Network Protection
- Firewall dan Application Gateway untuk jaringan virtual
- jaringan Zero Trust untuk aplikasi web dengan Azure Firewall dan Application Gateway
Jika Anda menggunakan pengontrol ingress NGINX atau pengontrol ingress yang dihosting AKS lainnya sebagai pengganti Azure Application Gateway, Anda dapat menggunakan Azure Firewall untuk memeriksa lalu lintas ke dan dari kluster AKS dan melindungi kluster dari penyelundupan data dan lalu lintas jaringan lain yang tidak diinginkan. Untuk informasi lebih lanjut, baca artikel berikut:
- Gunakan Azure Firewall untuk melindungi kluster Azure Kubernetes Service (AKS)
- Gunakan Azure Firewall untuk membantu melindungi kluster Azure Kubernetes Service (AKS)
Kontributor
Microsoft mempertahankan artikel ini. Kontributor berikut awalnya menulisnya:
Penulis utama:
- Paolo Salvatori | Insinyur Pelanggan Utama
Kontributor lain:
- Ken Kilty | TPM Utama
- Russell de Pina | TPM Utama
- Erin Schaffer | Pengembang Konten 2