次の方法で共有


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

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

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

重要

Microsoft では、Shared Access Signature を使うシナリオにはユーザー委任 SAS を使うことをお勧めします。 ユーザー委任 SAS は、アカウント キーの代わりに Microsoft Entra 資格情報で保護されており、優れたセキュリティを提供します。

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) にポリシーが適用されます。 サービス SAS とアカウント SAS の種類はアカウント キーで署名され、ユーザー委任 SAS は Microsoft Entra 資格情報で署名されます。

Note

ユーザー委任 SAS は、Microsoft Entra 資格情報を使用して取得されたユーザー委任キーで署名されます。 ユーザー委任キーには、SAS 有効期限ポリシーの対象ではない独自の有効期限間隔が存在します。 SAS 有効期限ポリシーは、ユーザー委任 SAS にのみ適用され、署名されたユーザー委任キーには適用されません。

SAS の有効期限ポリシーに関係なく、ユーザー委任 SAS の有効期限の最大間隔は 7 日です。 SAS 有効期限ポリシーが 7 日を超える値に設定されている場合、ポリシーはユーザー委任 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 の有効期限の推奨上限値を設定する前に、両方のアカウント アクセス キーをローテーションする必要があります

    Azure portal で SAS 有効期限ポリシーを構成するオプションが淡色表示されていることを示すスクリーンショット。

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

    Azure portal で SAS の有効期限ポリシーを構成する方法を示すスクリーンショット。

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

    ストレージ アカウントの共有アクセス署名の有効期間を監視する組み込みポリシーを選択する方法を示すスクリーンショット

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

    ポリシーの割り当ての作成方法を示すスクリーンショット

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

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

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

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

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

    SAS 有効期限の組み込みポリシーのコンプライアンス レポートを表示する方法を示すスクリーンショット

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

関連項目