Azure Cloud Shell でファイルを永続化する

初めて Cloud Shell を起動すると、ストレージ オプションを選択するようにダイアログが表示されます。 Cloud Shell を使用するたびに使用できるストア ファイルが必要な場合は、新規に作成するか、既存のストレージ リソースを選択する必要があります。 Cloud Shell では Microsoft Azure Files 共有を使用してセッション間でファイルを維持します。

Cloud Shell のストレージのしくみ

Cloud Shell は、次の両方の方法を使用してファイルを永続化します。

  • $HOME ディレクトリの内容を格納するディスク イメージを作成します。 ディスク イメージは https://storageaccountname.file.core.windows.net/filesharename/.cloudconsole/acc_user.img に保存されます。 Cloud Shell によって、このディスク イメージへの変更が自動的に同期されます。
  • ファイル共有を $HOME ディレクトリに clouddrive としてマウントします。 /home/<User>/clouddrive パスは storageaccountname.file.core.windows.net/filesharename にマッピングされます。

Note

SSH キーなど、$HOME ディレクトリ内のすべてのファイルが、マウントされたファイル共有に格納されたユーザー ディスク イメージに永続化されます。 ベスト プラクティスを使用して、$HOME ディレクトリおよびマウントされたファイル共有の情報をセキュリティで保護してください。

ストレージ アクセスのセキュリティ保護

セキュリティのために、各ユーザーが自分のストレージ アカウントを作成する必要があります。 Azure ロールベースのアクセス制御 (RBAC) では、ユーザーはストレージ アカウント レベルで共同作成者以上のアクセス権を持つ必要があります。

Cloud Shell では、指定されたサブスクリプション内のストレージ アカウントで Azure ファイル共有が使用されます。 アクセス許可が継承されるため、サブスクリプションで十分なアクセス権を持つユーザーは、サブスクリプションに含まれるストレージ アカウントとファイル共有にアクセスできます。

ユーザーは、ストレージ アカウントまたはサブスクリプション レベルでアクセス許可を設定することによって、各自のファイルへのアクセスをロックダウンする必要があります。

Cloud Shell のストレージ アカウントには、Cloud Shell のユーザーがホーム ディレクトリで作成したファイルが格納され、これにはアクセス トークンや資格情報などの機密情報が含まれる場合があります。

Azure リソース ポリシーによるリソース作成の制限

Cloud Shell で作成したストレージ アカウントは ms-resource-usage:azure-cloud-shell でタグ付けされます。 ユーザーが Cloud Shell でストレージ アカウントを作成するのを禁止する必要がある場合は、この特定のタグによってトリガーされる Azure リソース ポリシーを作成します。

Cloud Shell ストレージの管理

新しい clouddrive のマウント

前に Cloud Shell でエフェメラル セッションの使用を選んだ場合は、Cloud Shell で [設定]>[ユーザー設定のリセット] を選んで、ユーザー設定をリセットする必要があります。 手順に従って、既存のストレージ アカウントまたは新しいストレージ アカウントをマウントします。

Note

新しい共有をマウントすると、新しいユーザー イメージが $HOME ディレクトリ用に作成されます。 前回の $HOME イメージは、前のファイル共有に保持されます。

clouddrive のマウント解除

Cloud Shell ファイル共有はいつでもマウント解除できます。 Cloud Shell ではマウントされたファイル共有を使う必要があるため、次回のセッション時に、Cloud Shell により別のファイル共有を作成してマウントするように求められます。

  1. clouddrive unmount を実行します。
  2. プロンプトに同意して確定します。

マウントされていないファイル共有は、手動で削除するまで存在し続けます。 マウントを解除すると、Cloud Shell では後続のセッションでこのファイル共有を検索しなくなります。 詳細については、clouddrive unmount -h を実行してください。

Command
  clouddrive unmount: Unmount an Azure file share from Cloud Shell.

    Unmount enables unmounting and disassociating a file share from Cloud Shell.
    All current sessions will be terminated. Machine state and non-persisted files will be lost.
    You will be prompted to create and mount a new file share on your next session.
    Your previously mounted file share will continue to exist.

    Note: This command does not unmount storage if the session is Ephemeral.

Arguments
  None

警告

このコマンドを実行してもリソースは削除されませんが、Cloud Shell にマップされているリソース グループ、ストレージ アカウント、またはファイル共有を手動で削除すると、ファイル共有内にある $HOME ディレクトリ ディスク イメージとすべてのファイルは削除されます。 この削除操作は元に戻すことができません。

PowerShell コマンドを使う

現在のファイル共有に関する情報を得る

PowerShell の Get-CloudDrive コマンドを使用して、ファイル共有をバッキングするリソースに関する情報を取得します。

PS /home/user> Get-CloudDrive

FileShareName      : cs-user-microsoft-com-xxxxxxxxxxxxxxx
FileSharePath      : //cs7xxxxxxxxxxxxxxx.file.core.windows.net/cs-user-microsoft-com-xxxxxxxxxxxxxxx
MountPoint         : /home/user/clouddrive
Name               : cs7xxxxxxxxxxxxxxx
ResourceGroupName  : cloud-shell-storage-southcentralus
StorageAccountName : cs7xxxxxxxxxxxxxxx
SubscriptionId     : 78a66d97-7204-4a0d-903f-43d3d4170e5b

ファイル共有のマウント解除

Dismount-CloudDrive コマンドレットを使用すると、Cloud Shell ファイル共有はいつでもマウント解除できます。 clouddrive をマウント解除すると、現在のセッションが終了します。

Dismount-CloudDrive
Do you want to continue
Dismounting clouddrive will terminate your current session. You will be prompted to create and
mount a new file share on your next session
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

次のステップ