この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
■はじめに
本ブログでは、AzureAdvisorにて「Automation アカウント変数は、暗号化する必要がある」という推奨事項が表示された際の
対応方法について記載します。
■前提:AzureAutomationの変数について
Automationでは、[共有リソース] の [変数] > [変数の追加] から、変数を作成することが出来ます。
ここで作成した変数は、Automation内の複数の Runbook または DSC 構成で値を共有することが出来ます。
また、この変数は暗号化することが出来、暗号化した場合、AzurePortal上からその変数を表示することが出来ません。
(※更新のみ可能です。)
■推奨事項「Automation アカウント変数は、暗号化する必要がある」の表示内容について
本推奨事項は、重要度”高”として下記のように表示されています。
■推奨事項「Automation アカウント変数は、暗号化する必要がある」が表示される原因及び対応方法について
本推奨事項は、Automation内に変数が設定されているかつ、その変数が1つでも暗号化されていない場合に表示されます。
そのため、 Automation内で暗号化されていない変数をすべて暗号化することで、表示されなくなります。
ただし、推奨事項のDescriptionに記載されているように、
変数に機密データが含まれる場合は暗号化をすることが推奨されていますが、変数の暗号化は必須ではありません。
そのため、機密データが含まれていない場合は、未対応でも問題はありません。
また、この推奨事項を非表示にするには、推奨事項の左上にある”適用除外”を押下することで表示されなくなります。
もし、対応する場合は、変数の暗号化は変数作成時にしか出来ないため、
暗号化されていない既存の変数は削除し、暗号化された変数として再作成する必要があります。
また、上記の暗号化対応後は、該当変数を使用しているRunbookのスクリプトは修正する必要があります。
■AzureAutomationの変数を暗号化するメリット
Microsoftによると、ユーザーの資産をよりセキュアな状態で保護できることが、変数を暗号化するメリットとのことです。
Microsoftの公式ドキュメント(Azure Automation で変数を管理する)では、
下記の通り、変数を暗号化するとAzurePortal上から見れないと記載があります。
しかしながら、Runbookにて、コマンド「Get-AutomationVariable」を使用し変数の値を取得後、
「Write-output」で出力ストリームにその値を表示させるようなスクリプトを作成すれば、AzurePortal上から確認が可能であるとも記載があります。
そのため、実際に検証してみました。
1.まず、変数「encryptionTest」を作成し、値には「テスト20220929」を設定した上で暗号化しました。
2.その後、下記スクリプトを記載したRunbookを作成し、実行しました。
workflow outputencryptionTest
{
#接続の指定
$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
#Azureへログオン
Connect-AzAccount -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
#変数(encryptionTest)に格納されている値を出力
$encryptvar = Get-AutomationVariable -Name encryptionTest
Write-output "The encrypted value of the variable is: $encryptvar"
}
3.上記Runbookを実行した結果、出力ストリームに暗号化した変数が表示されました。
以上の検証から、Runbookを用いることで、暗号化された変数の値を確認することが可能であると分かりました。
つまり、Runbookの編集が出来ないユーザー(閲覧者権限のみを持つユーザー)は、暗号化された変数の値を確認することはできませんが、
Runbookの編集が出来るユーザー(共同作成者等を持つユーザー)であれば、暗号化された変数の値を確認することが可能であるため、
変数の暗号化によって全ユーザーに対して、セキュアな状態を保持できるとは言い難いように見受けられました。
■おわりに
推奨事項「Automation アカウント変数は、暗号化する必要がある」が表示された場合は、
変数に機密データが含まれているか否か、また暗号化するメリットを踏まえた上で、対応すると良いと思います。