Azure Automation でのセキュリティで保護された資産の暗号化

Azure Automation では、資格情報、証明書、接続、暗号化された変数などの資産が、さまざまなレベルの暗号化を使用してセキュリティで保護されます。 これは、このような資産のセキュリティを強化するのに役立ちます。 さらに、顧客コード、Runbook、DSC スクリプトのセキュリティとプライバシーをより高めるため、暗号化も行われます。 Azure Automation での暗号化は、暗号化に使用される最上位のキーに応じて、次の 2 つのモデルに従います。

  • Microsoft のマネージド キーの使用
  • 管理するキーの使用

Microsoft のマネージド キー

既定では、Azure Automation アカウントは Microsoft のマネージド キーを使用します。

セキュリティで保護された各資産が暗号化され、Automation アカウントごとに生成される一意キー (データ暗号化キー) を使用して Azure Automation に格納されます。 これらのキー自体も暗号化され、アカウント暗号化キー (AEK) と呼ばれる、アカウントごとに生成されるまた別の一意キーを使用して Azure Automation に格納されます。 これらのアカウント暗号化キーは暗号化され、Microsoft のマネージド キーを使用して Azure Automation に格納されます。

Key Vault を使用して管理するキー

独自のキーを使用して、Automation アカウントのセキュリティで保護された資産の暗号化を管理できます。 Automation アカウントのレベルでカスタマー マネージド キーを指定すると、そのキーは Automation アカウントのアカウント暗号化キーへのアクセスを保護および制御するために使用されます。 これにより、セキュリティで保護されたすべての資産を暗号化および暗号化を解除するために使用されます。 カスタマー マネージド キーを使用すると、アクセス制御の作成、ローテーション、無効化、取り消しを、いっそう柔軟に行うことができます。 また、セキュリティで保護された資産を保護するために使用される暗号化キーを監査することもできます。

カスタマー マネージド キーを格納するには、Azure Key Vault を使用します。 独自のキーを作成してキー コンテナーに格納することも、Azure Key Vault API を使ってキーを生成することもできます。

Azure Key Vault で Azure Firewall を有効にすると、そのサービスの Azure Automation unbook からのアクセスがブロックされます。 信頼された Microsoft サービスを許可するファイアウォール例外が有効になっている場合でも、Automation は信頼されたサービスの一覧に含まれないため、アクセスはブロックされます。 ファイアウォールが有効になっている場合、Hybrid Runbook Worker と 仮想ネットワーク サービス エンドポイント を使用しないとアクセスできません。 ただし、Key Vault のプライベート リンクを有効にすると、Azure Automation は Key Vault へのアクセスを失います。 Hybrid Runbook Worker のプライベート リンクを有効にした場合でも、Azure Automation サービスへのアクセスのみが許可され、Key Vault へのアクセスは許可されません。

Azure Key Vault の詳細については、「 What is Azure Key Vault? (Azure Key Vault とは)

Automation アカウントのカスタマー マネージド キーの使用

Automation アカウントのカスタマー マネージド キーによる暗号化を使用すると、Azure Automation により、関連付けられているキー コンテナー内のカスタマー マネージド キーを使用してアカウント暗号化キーがラップされます。 カスタマー マネージド キーを有効にしてもパフォーマンスに影響はなく、アカウントは新しいキーですぐに暗号化され、遅延は発生しません。

新しい Automation アカウントは、常に Microsoft のマネージド キーを使用して暗号化されます。 アカウントの作成時にカスタマー マネージド キーを有効にすることはできません。 カスタマー マネージド キーは、Azure Key Vault に格納されます。このキー コンテナーは、Automation アカウントに関連付けられているマネージド ID にキーのアクセス許可を付与するアクセス ポリシーを使用してプロビジョニングする必要があります。 マネージド ID は、Automation アカウントが作成された後でのみ使用できます。

Azure Automation でのセキュリティで保護された資産の暗号化に使用されているキーを、カスタマー マネージド キーを有効または無効にするか、キーのバージョンを更新するか、または別のキーを指定して変更した場合、アカウント暗号化キーの暗号化は変更されますが、Azure Automation アカウントのセキュリティで保護された資産を再暗号化する必要はありません。

Note

Azure Automation REST API 呼び出しを使用して、カスタマー マネージド キーを有効にするには、API バージョン 2020-01-13-preview を使用する必要があります。

Azure Automation 内でカスタマー マネージド キーを使用するための前提条件

Automation アカウントのカスタマー マネージド キーを有効にする前に、次の前提条件が満たされていることを確認する必要があります。

  • [論理的な削除][消去しない] プロパティが有効になっている Azure Key Vault。 これらのプロパティは、誤って削除された場合にキーを回復できるようにするために必要です。
  • Azure Automation の暗号化では RSA キーのみがサポートされています。 キーの詳細については、Azure Key Vault のキー、シークレット、および証明書の概要に関するページを参照してください。
  • Automation アカウントとキー コンテナーは異なるサブスクリプションにあってもかまいませんが、同じ Microsoft Entra テナントに存在する必要があります。
  • PowerShell を使用する場合は、Azure Az PowerShell モジュール がインストールされていることを確認します。 インストールまたはアップグレードするには、Azure Az PowerShell モジュールをインストールする方法に関するページを参照してください。

Automation アカウントの新しいシステム割り当て ID を生成して割り当てる

Automation アカウントでカスタマー マネージド キーを使用するには、その Automation アカウントが、カスタマー マネージド キーを格納しているキー コンテナーに対して認証する必要があります。 Azure Automation では、 Azure Key Vault でアカウントを認証するためにシステム割り当てマネージド ID が使用されます。 マネージド ID の詳細については、「Azure リソースのマネージド ID とは」を参照してください。

PowerShell の使用

PowerShell コマンドレット Set-AzAutomationAccount を使用して、既存の Azure Automation アカウントを変更します。 -AssignSystemIdentity パラメーターでは、Azure Key Vault などの他のサービスで使用するために、Automation アカウントの新しいシステム割り当て ID を生成して、割り当てます。 詳細については、「Azure リソースのマネージド ID とは」と「Azure Key Vault について」を参照してください。 次のコードを実行します。

# Revise variables with your actual values.
$resourceGroup = "ResourceGroupName"
$automationAccount = "AutomationAccountName"
$vaultName = "KeyVaultName"
$keyName = "KeyName"

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity

出力は次のようになります。

Output from Set-AzAutomationAccount cmdlet.

後で使用できるように PrincipalId を保存します。 次のコードを実行します。

$principalID = (Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Identity.PrincipalId

$principalID

REST の使用

Automation アカウントのシステム割り当てマネージド ID は、次の REST API 呼び出しを使用して構成します。

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

要求本文:

{ 
 "identity": 
 { 
  "type": "SystemAssigned" 
  } 
}

Automation アカウントのシステム割り当て ID が次のような応答で返されます。

{
 "name": "automation-account-name",
 "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
 ..
 "identity": {
    "type": "SystemAssigned",
    "principalId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
 },
..
}

キー コンテナーのアクセス ポリシーの構成

システムで割り当てられたマネージド ID が Automation アカウントに割り当てられたら、カスタマー マネージド キーを格納しているキー コンテナーへのアクセスを構成します。 Azure Automation では、ID でカスタマー マネージド キーにアクセスするために、GetRecoverWrapKeyUnwrapKey の操作アクセス許可が必要です。

PowerShell の使用

PowerShell コマンドレット Set-AzKeyVaultAccessPolicy を使用して、必要なアクセス許可を付与します。 次に、Add-AzKeyVaultKey コマンドレットを使用して、キー コンテナーにキーを作成します。 次のコードを実行します。

Set-AzKeyVaultAccessPolicy `
    -VaultName $vaultName `
    -ObjectId $principalID `
    -PermissionsToKeys Get, Recover, UnwrapKey, WrapKey

Add-AzKeyVaultKey `
    -VaultName $vaultName `
    -Name $keyName `
    -Destination 'Software'

出力は次のようになります。

Output from Add-AzKeyVaultKey cmdlet.

REST の使用

アクセス ポリシーは、次の REST API 呼び出しを使用して設定できます。

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sample-group/providers/Microsoft.KeyVault/vaults/sample-vault/accessPolicies/add?api-version=2018-02-14

要求本文:

{
  "properties": {
    "accessPolicies": [
      {
        "tenantId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
        "objectId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "permissions": {
          "keys": [
            "get",
            "recover",
            "wrapKey",
            "unwrapKey"
          ],
          "secrets": [],
          "certificates": []
        }
      }
    ]
  }
}

Note

tenantId および objectId フィールドには、Automation アカウントのマネージド ID の応答から、それぞれ identity.tenantIdidentity.principalId の値を指定する必要があります。

カスタマー マネージド キーを使用するように Automation アカウントを再構成する

Automation アカウントを Microsoft のマネージド キーからカスタマー マネージド キーに切り替える場合は、Azure PowerShell または Azure Resource Manager テンプレートを使用すると、この変更を実行できます。

PowerShell の使用

PowerShell コマンドレット Set-AzAutomationAccount を使用して、カスタマー マネージド キーを使用するように Automation アカウントを再構成します。

$vaultURI = (Get-AzKeyVault -VaultName $vaultName).VaultUri
$keyVersion = (Get-AzKeyVaultKey -VaultName $vaultName -KeyName $keyName).Version

Set-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount `
    -AssignSystemIdentity `
    -KeyName $keyName `
    -KeyVaultUri $vaultURI `
    -KeyVersion $keyVersion `
    -KeyVaultEncryption 

次のコマンドを実行すると、変更を確認できます。

(Get-AzAutomationAccount `
    -ResourceGroupName $resourceGroup `
    -Name $automationAccount).Encryption `
    |  ConvertTo-Json 

出力は次のようになります。

Output from Get-AzAutomationAccount cmdlet.

REST の使用

次の REST API 呼び出しを使用します。

PATCH https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview

要求本文:

{
	"identity": {
	"type": "SystemAssigned"
	},
	"properties": {
		"encryption": {
			"keySource": "Microsoft.Keyvault",
			"keyvaultProperties": {
				"keyName": "sample-vault-key",
				"keyvaultUri": "https://sample-vault-key12.vault.azure.net",
				"keyVersion": "7c73556c521340209371eaf623cc099d"
			}
		}
	}
}

サンプル応答

{
  "name": "automation-account-name",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name",
  ..
  "properties": {
    ..
    "encryption": {
      "keyvaultProperties": {
         "keyName": "sample-vault-key",
          "keyvaultUri": "https://sample-vault-key12.vault.azure.net",
          "keyVersion": "7c73556c521340209371eaf623cc099d"
      },
      "keySource": "Microsoft.Keyvault"
    },
    ..
  }
}

カスタマー マネージド キーのローテーション

Azure Key Vault のカスタマー マネージド キーは、お使いのコンプライアンス ポリシーに従ってローテーションすることができます。 キーがローテーションされたら、新しいキー URI を使用するように Automation アカウントを更新する必要があります。

キーをローテーションしても、Automation アカウントのセキュリティで保護された資産の再暗号化はトリガーされません。 これ以上必要な操作はありません。

カスタマー マネージド キーの失効

カスタマー マネージド キーへのアクセス権を取り消すには、PowerShell または Azure CLI を使用します。 詳細については、Azure Key Vault PowerShell に関する記事、または Azure Key Vault CLI に関する記事を参照してください。 アクセス権を取り消すと、Azure Automation が暗号化キーにアクセスできなくなるため、Automation アカウントのセキュリティで保護されたすべての資産へのアクセスが実質的にブロックされます。

次のステップ