你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
本文内容
本文将指导你如何将 Azure 存储配置为与 Azure 应用程序一致性快照工具 (AzAcSnap) 一起使用。
选择用于 AzAcSnap 的存储。
设置系统托管标识(推荐)或生成服务主体的身份验证文件。
验证与 Azure NetApp 文件的通信时,通信可能会失败或超时。检查防火墙规则没有阻止从运行 AzAcSnap 的系统到以下地址和 TCP/IP 端口的出站流量:
(https://)management.azure.com:443
(https://)login.microsoftonline.com:443
需要生成自己的自签名证书,然后与 Microsoft 运营部门共享 PEM(隐私增强邮件)文件的内容,以便将其安装到存储后端,以允许 AzAcSnap 通过 ONTAP 安全地进行身份验证。
将 PEM 和 KEY 合并到 AzAcSnap 所需的单个 PKCS12 文件中,以便对 ONTAP 进行基于证书的身份验证。
使用 curl
连接到其中一个节点来测试 PKCS12 文件。
Microsoft Operations 会在预配时提供存储用户名和存储 IP 地址。
启用与存储的通信
本节介绍如何启用与存储的通信。 使用以下选项卡正确选择你要使用的存储后端。
有两种方法可以使用系统管理标识或服务主体文件对 Azure 资源管理器进行身份验证。 此处介绍了这些选项。
Azure 系统托管标识
从 AzAcSnap 9 开始,可以使用系统托管标识代替服务主体进行操作。 使用此功能可避免需要在虚拟机 (VM) 上存储服务主体凭据。 要使用 Azure Cloud Shell 设置 Azure 托管标识,请执行以下步骤:
在与 Bash 的 Cloud Shell 会话中,使用以下示例适当设置 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}"
获取用于分配角色的主体 ID:
PRINCIPAL_ID=$(az resource list -n ${VM_NAME} --query [*].identity.principalId --out tsv)
为主体 ID 分配“参与者”角色:
az role assignment create --assignee "${PRINCIPAL_ID}" --role "${ROLE}" --scope "${SCOPE}"
可选 RBAC
可以在基于角色的访问控制 (RBAC) 中使用自定义角色定义来限制托管标识的权限。 为虚拟机创建合适的角色定义,以便能够管理快照。 可以在使用 Azure 应用程序一致性快照工具的提示和技巧 中找到示例权限设置。
然后,将角色分配给 Azure VM 主体 ID(也显示为 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“参与者”角色分配给订阅级别的服务主体。 可以将此范围缩小到测试将创建资源的特定资源组。
将输出内容剪切并粘贴到与 azacsnap
命令存储在同一系统上的名为 azureauth.json
的文件中。 使用适当的系统权限保护文件。
请确保 JSON 文件的格式与上一步中所述的格式完全相同,URL 用双引号 (") 括起来。
重要
从 AzAcSnap 10 开始,需要使用基于 HTTPS 的 REST API 才能与 Azure 大型实例存储进行通信。 AzAcSnap 10 之前的版本需要使用基于 SSH 的 CLI。
Azure 大型实例基于 HTTPS 的 REST API
使用基于证书的身份验证通过加密的 HTTPS 通道与存储后端通信。 以下示例步骤提供了为此通信设置 PKCS12 证书的相关指导:
生成 PEM 和 KEY 文件。
CN 等于 SVM 用户名,请询问 Microsoft 运营部门获取此 SVM 用户名。
在此示例中,我们将 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 运营部门提供)。
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"
}
}
}
Azure 大型实例基于 SSH 的 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
后续步骤