共有アクセス署名の有効期限ポリシーを構成する

共有アクセス署名 (SAS) を使用して、Azure Storage アカウント内のリソースへのアクセスを委任できます。 SAS トークンには、対象となるリソース、付与されるアクセス許可、およびアクセスが許可される間隔が含まれます。 ベスト プラクティスとしては、SAS が侵害された場合に備えて、SAS の期間を制限することが推奨されます。 ストレージ アカウントに SAS の有効期限ポリシーを設定することで、ユーザーがサービス SAS またはアカウント SAS を作成するときに推奨される有効期限の上限を指定できます。

Shared Access Signature の詳細については、「Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する」を参照してください。

SAS 有効期限ポリシーの概要

ストレージ アカウントに対して SAS 有効期限ポリシーを構成することができます。 SAS 有効期限ポリシーには、サービス SAS またはアカウント SAS の署名済み有効期限フィールドの推奨される上限を指定します。 推奨される上限は、日、時間、分、秒を組み合わせた日時値として指定します。

SAS の有効間隔を計算するには、署名済み有効期限フィールドの日時値から、署名済み開始フィールドの日時値を引きます。 結果の値が推奨される上限値以下であれば、その SAS は SAS 有効期限ポリシーに準拠しています。

SAS の有効期限ポリシーを構成した後は、推奨上限を超える期間のサービス SAS またはアカウント SAS を作成したすべてのユーザーに警告が表示されます。

SAS の有効期限ポリシーは、ユーザーがポリシーによって推奨されている制限を超える有効期限を持つ SAS を作成することを妨げません。 ユーザーがポリシーに違反する SAS を作成すると、推奨される最大期間と共に警告が表示されます。 Azure Monitor でのログの診断設定を構成している場合、ユーザーが推奨の期間後に失効する SAS を "使用" するたびに、Azure Storage はログの SasExpiryStatus プロパティにメッセージを書き込みます。 このメッセージは、SAS の有効間隔が推奨される間隔を超えたことを示す内容です。

ストレージ アカウントに対して SAS 有効期限ポリシーが有効な場合、すべての SAS に署名済み開始フィールドが必要です。 署名済み開始フィールドが SAS に含まれておらず、Azure Monitor でのログの診断設定を構成している場合、ユーザーが署名済み開始フィールドの値がない SAS を "使用" するたびに、Azure Storage はログの SasExpiryStatus プロパティにメッセージを書き込みます。

SAS の有効期限ポリシーを構成する

ストレージ アカウントに SAS 有効期限ポリシーを構成すると、アカウント キーを使って署名された各種の SAS にポリシーが適用されます。 アカウント キーを使って署名された共有アクセス署名の種類は、サービス SAS とアカウント SAS です。

最初にアカウント アクセス キーをローテーションする必要がありますか?

SAS の有効期限ポリシーを構成する前に、各アカウント アクセス キーを少なくとも 1 回ローテーションする必要がある場合があります。 ストレージ アカウントの keyCreationTime プロパティが、アカウント アクセス キー (key1 と key2) のいずれかとして null 値を持っている場合は、それらをローテーションする必要があります。 keyCreationTime プロパティが null かどうかを確認するには、「ストレージ アカウントのアカウント アクセス キーの作成時刻を取得する」を参照してください。 SAS の有効期限ポリシーを構成しようとして、最初にキーをローテーションする必要がある場合、その操作は失敗します。

SAS の有効期限ポリシーを構成する方法

SAS の有効期限ポリシーを構成するには、Azure portal、PowerShell、または Azure CLI を使用します。

Azure portal で SAS の有効期限ポリシーを構成するには、次の手順を実行します。

  1. Azure Portal のストレージ アカウントに移動します。

  2. [設定] の下で [構成] を選択します。

  3. [Allow recommended upper limit for shared access signature (SAS) expiry interval](共有アクセス署名 (SAS) の有効期間に推奨上限値を許可する) の設定を見つけて、 [有効] に設定します。

    Note

    設定が淡色表示され、次の図に示すメッセージが表示される場合は、SAS の有効期限の推奨上限値を設定する前に、両方のアカウント アクセス キーをローテーションする必要があります

    Screenshot showing the option to configure a SAS expiration policy is grayed out in the Azure portal.

  4. このストレージ アカウントでリソースに対して作成された新しい共有アクセス署名の推奨される間隔として [SAS の有効期限間隔に対して推奨される上限] に時間値を指定します。

    Screenshot showing how to configure a SAS expiration policy in the Azure portal.

  5. 保存を選択して、変更を保存します。

ログでポリシー違反を照会する

SAS の有効期限ポリシーが推奨するよりも長い期間有効な SAS の使用をログに記録するには、まず、ログを Azure Log Analytics ワークスペースに送信する診断設定を作成します。 詳細については、「Azure Log Analytics にログを送信する」を参照してください。

次に、Azure Monitor ログ クエリを使用して、ポリシー違反がないかを監視します。 Log Analytics ワークスペースで新しいクエリを作成し、次のクエリ テキストを追加して、 [実行] を押します。

StorageBlobLogs 
| where SasExpiryStatus startswith "Policy violated"
| summarize count() by AccountName, SasExpiryStatus

組み込みポリシーを使用してコンプライアンスを監視する

Azure Policy を使用してストレージ アカウントを監視し、サブスクリプション内のストレージ アカウントで SAS 有効期限ポリシーが構成されていることを確認できます。 Azure Storage には、アカウントでこの設定が構成されていることを確認するための組み込みポリシーが用意されています。 組み込みポリシーの詳細については、組み込みポリシー定義の一覧にある「ストレージ アカウントで Shared Access Signature (SAS) ポリシーを構成する必要がある」を参照してください。

リソース スコープの組み込みポリシーを割り当てる

Azure portal で組み込みポリシーを適切なスコープに割り当てるには、次の手順に従います。

  1. Azure portal で [ポリシー] を検索し、Azure Policy ダッシュボードを表示します。

  2. [作成] セクションで [割り当て] を選択します。

  3. [ポリシーの割り当て] を選択します。

  4. [ポリシーの割り当て] ページの [基本] タブの [スコープ] セクションで、ポリシー割り当てのスコープを指定します。 [その他] ボタンを選択して、サブスクリプションとオプションのリソース グループを選択します。

  5. [ポリシー定義] フィールドで、[その他] ボタンを選択し、[検索] フィールドにストレージ アカウント キーを入力します。 [ストレージ アカウント キーが期限切れにならないようにする必要がある] という名前のポリシー定義を選択します。

    Screenshot showing how to select the built-in policy to monitor validity intervals for shared access signatures for your storage accounts

  6. [確認と作成] を選択して、ポリシー定義を指定したスコープに割り当てます。

    Screenshot showing how to create the policy assignment

キーの有効期限ポリシーに対するコンプライアンスを監視する

キーの有効期限ポリシーに準拠するためにストレージ アカウントを監視するには、次の手順に従います。

  1. Azure Policy ダッシュボードで、ポリシーの割り当てで指定したスコープの組み込みポリシー定義を見つける。 [検索] ボックスで Storage accounts should have shared access signature (SAS) policies configured を検索し、組み込みのポリシーをフィルター処理できます。

  2. 目的のスコープを持つポリシー名を選択します。

  3. 組み込みポリシーの [ポリシーの割り当て] ページで、[コンプライアンスの表示] を選択します。 指定されたサブスクリプションとリソース グループ内のポリシー要件を満たしていないすべてのストレージ アカウントが、コンプライアンス レポートに表示されます。

    Screenshot showing how to view the compliance report for the SAS expiration built-in policy

ストレージ アカウントがコンプライアンスに準拠するように、「SAS の有効期限ポリシーを構成する」の説明に従って、そのアカウントの SAS の有効期限ポリシーを構成します。

関連項目