トレーニング
認定資格
Microsoft Certified: Identity and Access Administrator Associate - Certifications
ID ソリューションの現代化、ハイブリッド ソリューションの実装、ID ガバナンスの実装を行う Microsoft Entra ID の機能を実証します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Shared Access Signature (SAS) を使用すると、ストレージ アカウント内のコンテナーと BLOB への制限付きアクセスを許可できます。 SAS を作成するときに、クライアントがアクセスできる Azure Storage リソース、それらのリソースに対するアクセス許可、SAS の有効期間などの制約を指定します。
すべての SAS はキーによって署名されます。 次の 2 つの方法のいずれかで SAS に署名できます。
注意
ユーザー委任 SAS により、ストレージ アカウント キーで署名された SAS のセキュリティが向上します。 Microsoft では、ユーザー委任 SAS を可能な限り使用することを推奨しています。 詳細については、「Shared Access Signatures (SAS) でデータの制限付きアクセスを付与する」を参照してください。
この記事では、Microsoft Entra 資格情報を使用して、Azure PowerShell でコンテナーまたは BLOB のユーザー委任 SAS を作成する方法について説明します。
コンテナーまたは BLOB にアクセスするための SAS トークンは、Microsoft Entra 資格情報またはアカウント キーのいずれかを使用してセキュリティ保護することができます。 Microsoft Entra 資格情報でセキュリティ保護された SAS は、ユーザーの代わりに、SAS に署名するために使用される OAuth 2.0 トークンが要求されるため、ユーザー委任 SAS と呼ばれます。
セキュリティのベスト プラクティスとして、より侵害されやすいアカウント キーを使用するのではなく、可能な限り Microsoft Entra 資格情報を使用することをお勧めします。 アプリケーション設計で Shared Access Signature が必要な場合は、セキュリティを強化するために、Microsoft Entra 資格情報を使用してユーザー委任 SAS を作成してください。 ユーザー委任 SAS の詳細については、「ユーザー委任 SAS を作成する」を参照してください。
注意事項
有効な SAS を所有するすべてのクライアントは、その SAS で許可されているストレージ アカウントのデータにアクセスできます。 SAS を悪意のある、または意図しない用途から保護することが重要です。 SAS の配布は慎重に行い、侵害された SAS を失効させるための計画を用意しておいてください。
Shared Access Signature の詳細については、「Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する」を参照してください。
PowerShell を使用してユーザー委任 SAS を作成するには、バージョン 1.10.0 以降の Az. Storage モジュールをインストールします。 次の手順のようにしてモジュールの最新バージョンをインストールします。
Azure PowerShell の以前のインストールがある場合はアンインストールします。
%Program Files%\WindowsPowerShell\Modules
からすべての Azure モジュールを削除します。最新バージョンの PowerShellGet がインストールされていることを確認します。 Windows PowerShell ウィンドウを開き、次のコマンドを実行して最新バージョンをインストールします。
Install-Module PowerShellGet -Repository PSGallery -Force
PowerShellGet のインストール後、PowerShell ウィンドウを閉じて再び開きます。
最新バージョンの Azure PowerShell をインストールします。
Install-Module Az -Repository PSGallery -AllowClobber
Azure PowerShell バージョン 3.2.0 以降がインストールされていることを確認します。 次のコマンドを実行して、最新バージョンの Azure Storage PowerShell モジュールをインストールします。
Install-Module -Name Az.Storage -Repository PSGallery -Force
PowerShell ウィンドウを閉じて再び開きます。
インストールされている Az.Storage モジュールのバージョンを確認するには、次のコマンドを実行します。
Get-Module -ListAvailable -Name Az.Storage -Refresh
Azure PowerShell のインストールの詳細については、PowerShellGet を使用した Azure PowerShell のインストールに関するページを参照してください。
Connect-AzAccount コマンドを呼び出して、Microsoft Entra アカウントでサインインします。
Connect-AzAccount
PowerShell を使用したサインインの詳細については、「Azure PowerShell を使用してサインインする」を参照してください。
Azure PowerShell からユーザー委任 SAS を作成するには、PowerShell へのサインインに使用する Microsoft Entra アカウントに、Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションを含むロールが割り当てられている必要があります。 このアクセス許可により、Microsoft Entra アカウントがユーザー委任キーを要求できるようにします。 ユーザー委任キーは、ユーザー委任 SAS に署名するために使用されます。 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションを提供するロールは、ストレージ アカウント、リソース グループ、またはサブスクリプションのレベルで割り当てられている必要があります。 ユーザー委任 SAS を作成するための Azure RBAC アクセス許可の詳細については、「ユーザー委任 SAS を作成する」の Azure RBAC によるアクセス許可の割り当てに関するセクションを参照してください。
Microsoft Entra セキュリティ プリンシパルに Azure ロールを割り当てるための十分なアクセス許可がない場合は、アカウント所有者または管理者に依頼して、必要なアクセス許可を割り当ててもらう必要がある場合があります。
次の例では、ストレージ BLOB データ共同作成者ロールを割り当てます。これには、Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションが含まれます。 ロールは、ストレージ アカウントのレベルでスコープ設定されます。
山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"
Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションを含む組み込みロールの詳細については、「Azure 組み込みロール」を参照してください。
Azure PowerShell を使用してユーザー委任 SAS を作成すると、SAS への署名に使用されるユーザー委任キーが暗黙的に作成されます。 SAS に指定した開始時刻と有効期限は、ユーザー委任キーの開始時刻と有効期限としても使用されます。
ユーザー委任キーが有効な最大間隔は開始日から 7 日であるため、SAS の有効期限を開始時刻から 7 日以内で指定する必要があります。 ユーザー委任キーの有効期限が切れると SAS は無効になるため、有効期限が 7 日を超える SAS でも、7 日間だけ有効になります。
Azure PowerShell を使用してコンテナーまたは BLOB のユーザー委任 SAS を作成するには、まず、-UseConnectedAccount
パラメーターを指定して新しい Azure Storage コンテキスト オブジェクトを作成します。 -UseConnectedAccount
パラメーターは、コマンドで、サインインに使用した Microsoft Entra アカウントの下にコンテキスト オブジェクトを作成することを指定します。
山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount
コンテナーのユーザー委任 SAS トークンを返すには、New-AzStorageContainerSASToken コマンドを呼び出し、前に作成した Azure Storage コンテキスト オブジェクトを渡します。
次の例では、コンテナー用のユーザー委任 SAS トークンが返されます。 かっこ内のプレースホルダー値を独自の値に置き換えることを忘れないでください。
New-AzStorageContainerSASToken -Context $ctx `
-Name <container> `
-Permission racwdl `
-ExpiryTime <date-time>
返されるユーザー委任 SAS トークンは、次のようになります。
?sv=2018-11-09&sr=c&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-05T22%3A24%3A36Z&ske=2019-08-07T07%3A
00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=rwdl
BLOB のユーザー委任 SAS トークンを返すには、New-AzStorageBlobSASToken コマンドを呼び出し、前に作成した Azure Storage コンテキスト オブジェクトを渡します。
次の構文では、BLOB 用のユーザー委任 SAS が返されます。 この例では、-FullUri
パラメーターを指定しており、これにより SAS トークンを追加した BLOB URI が返されます。 かっこ内のプレースホルダー値を独自の値に置き換えることを忘れないでください。
New-AzStorageBlobSASToken -Context $ctx `
-Container <container> `
-Blob <blob> `
-Permission racwd `
-ExpiryTime <date-time>
-FullUri
返されるユーザー委任 SAS URI は、次のようになります。
https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?sv=2018-11-09&sr=b&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-06T21%3A16%3A54Z&ske=2019-08-07T07%3A00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=racwd
注意
ユーザー委任 SAS では、保存されているアクセス ポリシーを使用したアクセス許可の定義はサポートされていません。
Azure PowerShell からユーザー委任 SAS を取り消すには、Revoke-AzStorageAccountUserDelegationKeys コマンドを呼び出します。 このコマンドにより、指定したストレージ アカウントに関連付けられているすべてのユーザー委任キーが取り消されます。 これらのキーに関連付けられているすべての共有アクセス署名が無効になります。
山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
Revoke-AzStorageAccountUserDelegationKeys -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account>
重要
ユーザーの委任キーと Azure ロールの割り当てはいずれも Azure Storage によってキャッシュされるため、失効プロセスの開始と、既存のユーザーの委任 SAS の無効化の間に、遅延が発生する可能性があります。
トレーニング
認定資格
Microsoft Certified: Identity and Access Administrator Associate - Certifications
ID ソリューションの現代化、ハイブリッド ソリューションの実装、ID ガバナンスの実装を行う Microsoft Entra ID の機能を実証します。