PowerShellとポータルでAzure SASトークンを生成する方法

Azureでリソースへのアクセスを委任する方法はいくつかあります。その一つは、Shared Access Signature (SAS)トークンを使用する方法です。SASトークンは、クライアントがAzureデータにアクセスする方法を詳細に制御するためのものです。クライアントがアクセスできるリソース、クライアントの権限、トークンの有効期間など、多くのことを制御できます。

SASトークンの一般的な使用例は、アカウントSASを使用してAzureストレージアカウントを保護することです。

この記事では、AzureポータルおよびPowerShellを使用してAzure SASトークンを作成する方法について学びます。終了時には、SASトークンを取得し、さまざまなクライアントコマンドに渡してAzureストレージの管理を認証および承認できるようになります。

前提条件

この記事では、実際にいくつかのタスクを実行する方法を学びます。一緒に進める場合は、以下の前提条件を満たしていることを確認してください。

  • Azureサブスクリプション。まだ持っていない場合は、試用サブスクリプションをリクエストすることができます。
  • Azureストレージアカウント。詳細については、ストレージアカウントの作成を参照してください。
  • Az PowerShellモジュール(オプション)。これは、PowerShellを使用してShared Access Signatureトークンを生成する場合にのみ必要です
  • PowerShellを使用してSASトークンを生成する場合は、Windows PowerShell 5.1またはPowerShell Core 6+が必要です

Azureポータルを使用してSASトークンを生成する

SASトークンを生成する最も簡単な方法は、Azureポータルを使用することです。Azureポータルを使用すると、さまざまなオプションにグラフィカルにナビゲートできます。

Azureポータルを介してトークンを作成するには、まず、設定セクションでアクセスしたいストレージアカウントに移動し、共有アクセス許可トークンをクリックします。以下に、これがどのように見えるかの例を示します。

SASトークンには、多くの許可と開始/終了時間があります。この記事では、完全な許可を割り当て、デフォルトの有効期限である8時間を残します。各許可の詳細と説明が必要な場合は、Microsoftドキュメントを参照してください。

デフォルトのチェックボックスをすべて残し、SASと接続文字列を生成ボタンをクリックします(以下の例を参照)。

Generating SAS Token from the Azure Portal

トークンが生成されると、以下のSASと接続文字列を生成ボタンの下にボックスにリストされます(以下の例を参照)。

Copying the generated SAS token

この時点で、SASトークンをコピーして必要な場所に貼り付けることができます。

PowerShellを使用してSASトークンを生成する

Azureポータルにログインする必要がないようにするため、または複数のストレージアカウントのSASトークンを一度に生成する場合、PowerShellを使用できます。PowerShellはAzureのREST APIを使用してAzureに呼び出しを行い、トークンを生成します。

PowerShellを開き、Connect-AzAccountで認証を行います。認証が完了したら、アクセスしたいストレージアカウントを見つけます。以下に、demo_accountというストレージアカウントをdemo_rgリソースグループでクエリする例があります。$contextの値を使用して、トークン生成コマンドに渡します。

$context = (Get-AzStorageAccount -ResourceGroupName 'demo_rg' -AccountName 'demo_account').context

ストレージアカウントのコンテキストが見つかったら、New-AzStorageAccountSASTokenコマンドを使用してSASトークンを作成します。以下の例では、ストレージアカウントとすべてのサブコンポーネントに対して完全なアクセス権限を持つSASトークンを生成しています。

New-AzStorageAccountSASToken -Context $context -Service Blob,File,Table,Queue -ResourceType Service,Container,Object -Permission racwdlup

New-AzStorageAccountSASTokenを使用してSASトークンを作成する場合、トークンの有効期間は1時間です。この時間を延長したい場合は、ExpiryTimeパラメータを使用できます。

SASトークンの権限の制限

SASトークンを使用する理由の1つは、他のパーティに一定期間とアクセス権限のセットを与えることです。前の例では、完全なアクセス権限を持つSASトークンが生成されました。完全なアクセス権限を与えることが常に最良のシナリオではありません。

Serviceパラメーターは、サービスへのアクセスを定義します。たとえば、blobを使用すると、Azure Blob Storageサービスへのアクセスのみを許可できます。その他のサービスには、FileTable、およびQueueがあります。

ResourceTypeパラメーターは、特定のリソースのアクセスを制限します。たとえば、値としてcontainerを使用すると、コンテナリソースへのアクセスのみが許可されます。その他の有効なリソースタイプには、ServiceおよびObjectがあります。

Permissionパラメーターを使用すると、許可される権限を定義できます。必要に応じて、1つまたは複数の権限を指定します。rwdの値は、readwrite、およびdeleteの権限を与えるのと同等です。その他の有効な権限値には、(l)ist(a)dd(u)pdate、および(p)rocessがあります。

SASトークンの使用

生成されたSASトークンを使用する方法はさまざまです。最も一般的な方法の1つは、ストレージコンテキストで使用することです。ストレージコンテキストは、さまざまなコマンドに渡すために認証情報を「パッケージ化」する方法です。

A common way to use the SAS token is via PowerShell. Using the New-AzStorageContext command that’s part of the Az PowerShell module. You can see an example below using the SAS token to upload a file to an existing storage container.

$StorageAccountName = 'foo'
 $ContainerName = 'bar'
 Create a storage context
 $sasToken = ''
 $StorageContext = New-AzStorageContext $StorageAccountName -SasToken $sasToken
 Upload a file
 $storageContainer = Get-AzStorageContainer -Name $ContainerName -Context $StorageContext
 $storageContainer | Set-AzStorageBlobContent –File 'C:\file.txt' –Blob 'file.txt'

要約

SASトークンの作成方法はいくつかあります。この記事では、最も一般的な方法のいくつかを学びました。作成されたSASトークンは、さまざまな方法で使用することができますが、どの方法を選ぶかはあなた次第です。

Source:
https://adamtheautomator.com/azure-sas-token/