本文內容
本文提供將 Azure 記憶體設定為與 Azure 應用程式 一致快照集工具 (AzAcSnap) 搭配使用的指南。
選取您搭配 AzAcSnap 使用的記憶體。
設定系統受控識別(建議)或產生服務主體的驗證檔案。
驗證與 Azure NetApp Files 的通訊時,通訊可能會失敗或逾時。檢查防火牆規則不會封鎖從執行 AzAcSnap 的系統到下列位址和 TCP/IP 連接埠的輸出流量:
(https://)management.azure.com:443
(https://)login.microsoftonline.com:443
您必須產生自己的自我簽署憑證,然後將 PEM (Privacy Enhanced Mail) 檔案的內容與 Microsoft 作業共用,以便安裝到記憶體後端,讓 AzAcSnap 安全地向 ONTAP 進行驗證。
將 PEM 和 KEY 合併成 AzAcSnap 所需的單一 PKCS12 檔案,以向 ONTAP 進行憑證式驗證。
使用 curl
來測試 PKCS12 檔案,以連線到其中一個節點。
Microsoft Operations 會在佈建時提供儲存體使用者名稱和儲存體 IP 位址。
啟用與儲存體的通訊
本節說明如何啟用與儲存體的通訊。 使用下列索引標籤來正確選取您所使用的儲存體後端。
有兩種方式可以使用系統受控識別或服務主體檔案對 Azure Resource Manager 進行驗證。 此處將說明這些選項。
Azure 系統受控識別
從 AzAcSnap 9,您可以使用系統受控識別,而非服務主體來進行作業。 使用此功能可避免需要在虛擬機器 (VM) 上儲存服務主體認證。 若要使用 Azure Cloud Shell 來設定 Azure 受控識別,請遵循下列步驟:
在使用 Bash 的 Cloud Shell 工作階段中,使用下列範例來適當設定殼層變數,並將其套用至您要建立 Azure 受控識別的訂用帳戶。 將 SUBSCRIPTION
、VM_NAME
和 RESOURCE_GROUP
設定為您的網站特定值。
export SUBSCRIPTION="99z999zz-99z9-99zz-99zz-9z9zz999zz99"
export VM_NAME="MyVM"
export RESOURCE_GROUP="MyResourceGroup"
export ROLE="Contributor"
export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}"
將 Cloud Shell 設定為正確的訂用帳戶:
az account set -s "${SUBSCRIPTION}"
建立虛擬機器的受控識別。 下列命令會設定 (或顯示是否已設定) AzAcSnap VM 的受控識別:
az vm identity assign --name "${VM_NAME}" --resource-group "${RESOURCE_GROUP}"
取得主體識別碼以便指派角色:
PRINCIPAL_ID=$(az resource list -n ${VM_NAME} --query [*].identity.principalId --out tsv)
將參與者角色指派給主體識別碼:
az role assignment create --assignee "${PRINCIPAL_ID}" --role "${ROLE}" --scope "${SCOPE}"
選擇性 RBAC
您可以使用角色型存取控制 (RBAC) 中的自訂角色定義來限制受控識別的權限。 為虛擬機器建立適當的角色定義,使其能夠管理快照集。 您可以在使用 Azure 應用程式一致快照集工具的秘訣和訣竅 中,找到權限設定範例。
然後將角色指派給 Azure VM 主體識別碼 (也顯示為 SystemAssignedIdentity
):
az role assignment create --assignee ${PRINCIPAL_ID} --role "AzAcSnap on ANF" --scope "${SCOPE}"
產生服務主體檔案
在 Cloud Shell 工作階段中,確認您已依預設登入要與服務主體建立關聯的訂用帳戶:
az account show
若訂用帳戶不正確,請使用 az account set
命令:
az account set -s <subscription name or id>
使用 Azure CLI 建立服務主體,如此範例所示:
az ad sp create-for-rbac --name "AzAcSnap" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
此指令應會產生如此範例的輸出:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecret": "Dd4Ee~5Ff6.-Gg7Hh8Ii9Jj0Kk1Ll2_Mm3Nn4Oo5",
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
此命令會自動將 RBAC 參與者角色指派給訂用帳戶層級的服務主體。 您可以將範圍縮小到測試將建立資源的特定資源群組。
將輸出內容剪下並貼到名為 azureauth.json
的檔案,其儲存在 azacsnap
命令的相同系統中。 使用適當的系統權限保護檔案。
請確定 JSON 檔案的格式與上一個步驟所述完全相同,且 URL 以雙引號 (") 括住。
重要
從 AzAcSnap 10,與 Azure 大型實例記憶體的通訊會透過 HTTPS 使用 REST API。 AzAcSnap 10 之前的版本會透過 SSH 使用 CLI。
透過 HTTPS 的 Azure 大型實例 REST API
使用憑證式驗證,透過加密的 HTTPS 通道來與記憶體後端通訊。 下列範例步驟提供此通訊之 PKCS12 憑證設定的指引:
產生 PEM 和 KEY 檔案。
CN 等於 SVM 使用者名稱,請詢問此 SVM 用戶名稱Microsoft作業。
在此範例中,我們使用 svmadmin01
作為 SVM 使用者名稱,視您的安裝需要修改此專案。
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout svmadmin01.key -out svmadmin01.pem -subj "/C=US/ST=WA/L=Redmond/O=MSFT/CN=svmadmin01"
請參閱下列輸出:
Generating a RSA private key
........................................................................................................+++++
....................................+++++
writing new private key to 'svmadmin01.key'
-----
輸出 PEM 檔案的內容。
PEM 檔案的內容用於將 client-ca 新增至 SVM。
! 將 PEM 檔案的內容傳送至 Microsoft BareMetal 基礎結構 (BMI) 系統管理員。
cat svmadmin01.pem
-----BEGIN CERTIFICATE-----
MIIDgTCCAmmgAwIBAgIUGlEfGBAwSzSFx8s19lsdn9EcXWcwDQYJKoZIhvcNAQEL
/zANBgkqhkiG9w0BAQsFAAOCAQEAFkbKiQ3AF1kaiOpl8lt0SGuTwKRBzo55pwqf
PmLUFF2sWuG5Yaw4sGPGPgDrkIvU6jcyHpFVsl6e1tUcECZh6lcK0MwFfQZjHwfs
MRAwDgYDVQQHDAdSZWRtb25kMQ0wCwYDVQQKDARNU0ZUMRMwEQYDVQQDDApzdm1h
ZG1pbjAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuE6H2/DK9xjz
TY1JSYIeArJ3GQnBz7Fw2KBT+Z9dl2kO8p3hjSE/5W1vY+5NLDjEH6HG1xH12QUO
y2+NoT2s4KhGgWbHuJHpQqLsNFqaOuLyc3ofK7BPz/9JHz5JKmNu1Fn9Ql8s4FRQ
4GzXDf4qC+JhQBO3iSvXuwDRfGs9Ja2x1r8yOJEHxmnLgGVw6Q==
-----END CERTIFICATE-----
將 PEM 和 KEY 合併成單一 PKCS12 檔案(AzAcSnap 所需的檔案)。
openssl pkcs12 -export -out svmadmin01.p12 -inkey svmadmin01.key -in svmadmin01.pem
svmadmin01.p12 檔案會當做 AzAcSnap 組態檔 aliStorageResource 區段中 certificateFile 的值使用。
使用 curl 測試 PKCS12 檔案。
從 Microsoft 作業取得確認之後,他們已將憑證套用至 SVM 以允許憑證型登入,然後測試 SVM 的連線能力。
在此範例中,我們使用名為 svmadmin01.p12 的 PKCS12 檔案來連線到 SVM 主機 “X.X.X.X” (此 IP 位址將由 Microsoft Operations 提供)。
curl --cert-type P12 --cert svmadmin01.p12 -k 'https://X.X.X.X/api/cluster?fields=version'
{
"version": {
"full": "NetApp Release 9.15.1: Wed Feb 21 05:56:27 UTC 2024",
"generation": 9,
"major": 15,
"minor": 1
},
"_links": {
"self": {
"href": "/api/cluster"
}
}
}
透過 SSH 的 Azure 大型實例 CLI
警告
這些指示適用於 AzAcSnap 10 之前的版本,而且我們不再定期更新此章節的內容。
與儲存體後端的通訊會透過加密的 SSH 通道執行。 下列範例步驟提供此通訊的 SSH 設定指引:
修改 /etc/ssh/ssh_config
檔案。
請參閱下列輸出,其中包含 MACs hmac-sha
行:
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port 22
Protocol 2
# Cipher 3des
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-
cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd
MACs hmac-sha
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
使用下列範例命令來產生私人/公開金鑰組。 產生金鑰時,請勿輸入密碼。
ssh-keygen -t rsa –b 5120 -C ""
cat /root/.ssh/id_rsa.pub
命令的輸出是公開金鑰。 將其傳送至 Microsoft Operations,讓快照集工具可以與儲存體子系統通訊。
cat /root/.ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDoaRCgwn1Ll31NyDZy0UsOCKcc9nu2qdAPHdCzleiTWISvPW
FzIFxz8iOaxpeTshH7GRonGs9HNtRkkz6mpK7pCGNJdxS4wJC9MZdXNt+JhuT23NajrTEnt1jXiVFH
bh3jD7LjJGMb4GNvqeiBExyBDA2pXdlednOaE4dtiZ1N03Bc/J4TNuNhhQbdsIWZsqKt9OPUuTfD
j0XvwUTLQbR4peGNfN1/cefcLxDlAgI+TmKdfgnLXIsSfbacXoTbqyBRwCi7p+bJnJD07zSc9YCZJa
wKGAIilSg7s6Bq/2lAPDN1TqwIF8wQhAg2C7yeZHyE/ckaw/eQYuJtN+RNBD
下一步