共有アクセス署名の有効期限ポリシーを構成する
共有アクセス署名 (SAS) を使用して、Azure Storage アカウント内のリソースへのアクセスを委任できます。 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 を作成すると、推奨される最大間隔と共に警告が表示されます。 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 の有効期限ポリシーを構成するには、次の手順を実行します。
ログでポリシー違反を照会する
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 で組み込みポリシーを適切なスコープに割り当てるには、次の手順に従います。
Azure portal で [ポリシー] を検索し、Azure Policy ダッシュボードを表示します。
[作成] セクションで [割り当て] を選択します。
[ポリシーの割り当て] を選択します。
[ポリシーの割り当て] ページの [基本] タブの [スコープ] セクションで、ポリシー割り当てのスコープを指定します。 [その他] ボタンを選択して、サブスクリプションとオプションのリソース グループを選択します。
[ポリシー定義] フィールドで、[その他] ボタンを選択し、[検索] フィールドにストレージ アカウント キーを入力します。 [ストレージ アカウント キーが期限切れにならないようにする必要がある] という名前のポリシー定義を選択します。
[確認と作成] を選択して、ポリシー定義を指定したスコープに割り当てます。
キーの有効期限ポリシーに対するコンプライアンスを監視する
キーの有効期限ポリシーに準拠するためにストレージ アカウントを監視するには、次の手順に従います。
Azure Policy ダッシュボードで、ポリシーの割り当てで指定したスコープの組み込みポリシー定義を見つける。 [検索] ボックスで
Storage accounts should have shared access signature (SAS) policies configured
を検索し、組み込みのポリシーをフィルター処理できます。目的のスコープを持つポリシー名を選択します。
組み込みポリシーの [ポリシーの割り当て] ページで、[コンプライアンスの表示] を選択します。 ポリシー要件を満たしていない、指定されたサブスクリプションとリソース グループ内のすべてのストレージ アカウントが、コンプライアンス レポートに表示されます。
ストレージ アカウントがコンプライアンスに準拠するように、「SAS の有効期限ポリシーを構成する」の説明に従って、そのアカウントの SAS の有効期限ポリシーを構成します。