管理 Azure 自动化数据

本文包含多个主题,介绍如何在 Azure 自动化环境中保护数据。

针对 Azure 自动化的 TLS 1.2 或更高版本

为了确保传输到 Azure 自动化的数据的安全性,我们强烈建议你配置为使用传输层安全性 (TLS) 1.2 或更高版本。 下面列出了通过 HTTPS 与自动化服务进行通信的方法或客户端:

  • Webhook 调用

  • 混合 Runbook 辅助角色,其包括由更新管理以及更改跟踪和清单管理的计算机。

  • DSC 节点

我们发现旧版 TLS/安全套接字层 (SSL) 容易受到攻击,尽管目前出于向后兼容,这些协议仍可正常工作,但我们不建议使用。 除非必要,否则我们不建议将代理显式设置为仅使用 TLS 1.2,因为这可能会破坏平台级安全功能,导致无法自动检测并利用推出的更新且更安全的协议,例如 TLS 1.3。

有关适用于 Windows 和 Linux 的 Log Analytics 代理(混合 Runbook 辅助角色的依赖项)的 TLS 1.2 支持的信息,请参阅 Log Analytics 代理概述 - TLS 1.2

升级混合辅助角色和 Webhook 调用的 TLS 协议

2024 年 10 月 31 日开始,使用传输层安全性 (TLS) 1.0 和 1.1 协议的所有基于代理和扩展的用户混合 Runbook 辅助角色、Webhook 和 DSC 节点将不再能够连接到 Azure 自动化。 使用 TLS 1.0 和 1.1 协议在混合辅助角色上运行或计划的所有作业都将失败。

确保触发 Runbook 的 Webhook 调用在 TLS 1.2 或更高版本上导航。 确保进行注册表更改,以便基于代理和扩展的辅助角色仅就 TLS 1.2 及更高版本协议进行协商。

对于 Linux 混合辅助角色,请运行以下 Python 脚本以升级到最新的 TLS 协议。

import os

# Path to the OpenSSL configuration file as per Linux distro
openssl_conf_path = "/etc/ssl/openssl.cnf"

# Open the configuration file for reading
with open(openssl_conf_path, "r") as f:
    openssl_conf = f.read()

# Check if a default TLS version is already defined
if "DEFAULT@SECLEVEL" in openssl_conf:
    # Update the default TLS version to TLS 1.2
    openssl_conf = openssl_conf.replace("CipherString = DEFAULT@SECLEVEL", "CipherString = DEFAULT@SECLEVEL:TLSv1.2")

    # Open the configuration file for writing and write the updated version
    with open(openssl_conf_path, "w") as f:
        f.write(openssl_conf)

    # Restart any services that use OpenSSL to ensure that the new settings are applied
    os.system("systemctl restart apache2")
    print("Default TLS version has been updated to TLS 1.2.")
else:
    # Add the default TLS version to the configuration file
    openssl_conf += """
    Options = PrioritizeChaCha,EnableMiddleboxCompat
    CipherString = DEFAULT@SECLEVEL:TLSv1.2
    MinProtocol = TLSv1.2
    """

    # Open the configuration file for writing and write the updated version
    with open(openssl_conf_path, "w") as f:
        f.write(openssl_conf)

    # Restart any services that use OpenSSL to ensure that the new settings are applied
    os.system("systemctl restart apache2")
    print("Default TLS version has been added as TLS 1.2.")

特定于平台的指南

平台/语言 支持 更多信息
Linux Linux 分发版往往依赖于 OpenSSL 来提供 TLS 1.2 支持。 请检查 OpenSSL 变更日志,确认你的 OpenSSL 版本是否受支持。
Windows 8.0 - 10 受支持,并且默认已启用。 确认是否仍在使用默认设置
Windows Server 2012 - 2016 受支持,并且默认已启用。 确认是否仍在使用默认设置
Windows 7 SP1 和 Windows Server 2008 R2 SP1 受支持,但默认未启用。 有关启用方法的详细信息,请参阅传输层安全性 (TLS) 注册表设置页。

数据保留

在你删除 Azure 自动化中的某个资源时,该资源在被永久移除之前会保留多日以供审核。 在此期间,无法查看或使用该资源。 此策略也适用于属于已删除的自动化帐户的资源。 保留策略应用于所有用户并且当前无法自定义。 但是,如果需要将数据保留更长时间,则可以将 Azure 自动化作业数据转发到 Azure Monitor 日志

下表汇总了各种资源的保留策略。

数据 策略
帐户 在帐户被用户删除 30 天后将其永久删除。
资产 在资产被用户删除 30 天后或者在包含该资产的帐户被用户删除 30 天后将其永久删除。 资产包括变量、计划、凭据、证书、Python 2 包和连接。
DSC 节点 在使用 Azure 门户或 Windows PowerShell 中的 Unregister-AzAutomationDscNode cmdlet 从自动化帐户中取消注册 DSC 节点 30 天后,将永久删除该节点。 在用户删除保存节点的帐户 30 天后,也会永久删除该节点。
作业 作业在修改之后(例如在作业完成、停止或暂停之后)删除,并在 30 天后永久删除。
模块 在模块被用户删除 30 天后或者在包含该模块的帐户被用户删除 30 天后将其永久删除。
节点配置/MOF 文件 生成新节点配置 30 天后,将永久删除旧节点配置。
节点报告 在生成该节点的新报告 90 天后永久删除节点报告。
Runbook 在用户删除 Runbook 30 天后,或者在用户删除包含该资源的帐户 30 天后,系统会永久移除该资源1

1通过 Azure 支持归档 Azure 支持事件,可以在 30 天内恢复 Runbook。 转到 Azure 支持站点并选择“提交支持请求”。

数据备份

删除 Azure 中的某个自动化帐户时,该帐户中的所有对象都会删除。 对象包括 runbook、模块、配置、设置、作业和资产。 可以在 30 天内恢复已删除的自动化帐户。 在删除自动化帐户之前,还可以参考以下信息来备份该帐户的内容:

Runbook

可以使用 Azure 门户或 Windows PowerShell 中的 Get-AzureAutomationRunbookDefinition cmdlet 将 Runbook 导出到脚本文件。 可以将这些脚本文件导入到另一个自动化帐户中,如 在 Azure 自动化中管理 runbook 中所述。

集成模块

你无法从 Azure 自动化导出集成模块,这些模块必须从自动化帐户外部提供。

资产

无法导出 Azure 自动化资产:证书、连接、凭据、计划和变量。 可以改为使用 Azure 门户和 Azure cmdlet 来记录这些资产的详细信息。 然后使用这些详细信息创建导入到另一个自动化帐户中的 Runbook 使用的任何资产。

无法使用 cmdlet 检索已加密变量或凭据密码字段的值。 如果不知道这些值,可以在 runbook 中检索它们。 若要检索变量值,请参阅 Azure 自动化中的变量资产。 若要了解有关检索凭据值的详细信息,请参阅 Azure 自动化中的凭据资产

DSC 配置

可以使用 Azure 门户或 Windows PowerShell 中的 Export-AzAutomationDscConfiguration cmdlet 将 DSC 配置导出到脚本文件。 可以在另一个自动化帐户中导入并使用这些配置。

数据驻留

在创建 Azure 自动化帐户期间指定区域。 资产、配置、日志等服务数据存储在该区域,可能在同一地理位置内的其他区域传输或处理。 这些全球终结点是为最终用户提供高性能、低延迟体验所需的,无论他们身在何处。

后续步骤