コピー操作のソースをストレージ アカウントに制限する

セキュリティ上の理由から、ストレージ管理者は、データをコピーできる環境をセキュリティで保護されたアカウントに制限する場合があります。 許可されるコピー操作のスコープを制限することで、信頼されていないテナントまたは仮想ネットワークからの不要なデータの侵入を防ぐことができます。

この記事では、コピー操作のソース アカウントを、コピー先アカウントと同じテナント内にある、またはコピー先と同じ仮想ネットワークへのプライベート リンクを持つアカウントに制限する方法について説明します。

重要

現在、コピー操作の許可スコープはプレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

コピー操作の許可されるスコープ (プレビュー) について

ストレージ アカウントの AllowedCopyScope プロパティは、データをコピー先アカウントにコピーできる環境を指定するために使います。 これは Azure portal に構成設定 [コピー操作の許可されるスコープ (プレビュー)] と表示されます。 このプロパティは既定では設定されておらず、明示的に設定するまでは値が返されません。 次の 3 つの値を指定できます。

  • (null) (既定値): 任意のストレージ アカウントからコピー先アカウントへのコピーを許可します。
  • Microsoft Entra ID: コピー先アカウントと同じ Microsoft Entra テナント内のアカウントからのみコピーを許可します。
  • PrivateLink: コピー先アカウントと同じ仮想ネットワークへのプライベート リンクを持つストレージ アカウントからのコピーのみを許可します。

この設定は、[BLOB のコピー][Copy BLOB From URL] (URL からの BLOB のコピー) の操作に適用されます。 [BLOB のコピー] を使うツールの例として、AzCopy と Azure Storage Explorer があります。

この設定で指定した要件をコピー要求のソースが満たしていない場合、要求は HTTP 状態コード 403 (禁止) で失敗します。

AllowedCopyScope プロパティは、Azure Resource Manager デプロイ モデルを使うストレージ アカウントのみでサポートされています。 Azure Resource Manager デプロイ モデルを使用しているストレージ アカウントの詳細については、「ストレージ アカウントの種類」を参照してください。

コピー操作のソース ストレージ アカウントを特定する

ストレージ アカウントの AllowedCopyScope の値を変更する前に、変更の影響を受けるユーザー、アプリケーション、またはサービスを特定します。 その結果によっては、目的のコピー ソースすべてを含むスコープに設定を調整したり、ソース ストレージ アカウントの一部についてネットワークまたは Microsoft Entra の構成を調整したりする必要があります。

Azure Monitor の Azure Storage ログには、コピー操作のソースとコピー先を含め、ストレージ アカウントに対して行われた要求に関する詳細が取り込まれます。 詳細については、「Azure Storage を監視する」を参照してください。 ログを有効にし、分析することで、コピー先ストレージ アカウントの AllowedCopyScope を変更したことで影響を受けた可能性があるコピー操作を特定できます。

Azure portal での診断設定の作成

Azure Monitor で Azure Storage のデータをログし、Azure Log Analytics で分析するには、まず、データをログする要求の種類とストレージ サービスを示す診断設定を作成する必要があります。 Azure portal で診断設定を作成するには、これらの手順に従います。

  1. Azure ストレージ アカウントが含まれるサブスクリプションに新しい Log Analytics ワークスペースを作成するか、既存の Log Analytics ワークスペースを使用します。 ストレージ アカウントのログ記録を構成した後、Log Analytics ワークスペースでログを使用できるようになります。 詳細については、「Azure ポータルで Log Analytics ワークスペースを作成する」を参照してください。

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

  3. [監視] セクションで、[診断設定] を選択します。

  4. 要求をログに記録する Azure Storage サービスを選択します。 たとえば、Blob Storage に対する要求をログするには、[Blob] を選びます。

  5. [診断設定の追加] を選択します。

  6. 診断設定の名前を指定します。

  7. [カテゴリ][ログ] セクションで、StorageReadStorageWriteStorageDelete を選び、選んだサービスに対するすべてのデータ要求をログします。

  8. [宛先の詳細] で、 [Log Analytics ワークスペースに送信する] を選択します。 以下の図に示すように、ご利用のサブスクリプションと、先ほど作成した Log Analytics ワークスペースを選び、[保存] を選びます。

    Screenshot showing how to create a diagnostic setting for logging requests.

診断設定を作成した後、ストレージ アカウントに対する要求が、その設定に従ってログに記録されるようになります。 詳細については、Azure でリソース ログとメトリックを収集するための診断設定の作成に関するページを参照してください。

コピー要求のログのクエリを実行する

Azure Storage ログには、別のソースからストレージ アカウントにデータをコピーするすべての要求が含まれています。 ログ エントリには、コピー先ストレージ アカウントの名前とソース オブジェクトの URI と共に、コピーを要求しているクライアントの識別に役立つ情報が含まれています。 Azure Monitor の Azure Storage ログで使用できるフィールドの詳細なリファレンスについては、「リソース ログ」を参照してください。

BLOB をコピーする要求のログのうち、過去 7 日間に作成されたものを取得するには、次の手順を実行します。

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

  2. [監視] セクションで、[ログ] を選択します。

  3. 以下のクエリを新しいログ クエリに貼り付けて実行します。 このクエリを実行すると、ストレージ アカウントにデータをコピーする要求で最も頻繁に参照されたソース オブジェクトが表示されます。 次の例では、プレースホルダーのテキスト <account-name> をお使いのストレージ アカウント名に置き換えます。

    StorageBlobLogs
    | where OperationName has "CopyBlobSource" and TimeGenerated > ago(7d) and AccountName == "<account-name>"
    | summarize count() by Uri, CallerIpAddress, UserAgentHeader
    

クエリの結果は次のようになります。

Screenshot showing how a Copy Blob Source log query might look.

この URI はコピーされるソース オブジェクトの完全なパスです。ストレージ アカウント名、コンテナー名、ファイル名が含まれています。 URI の一覧から、特定の AllowedCopyScope 設定が適用された場合にコピー操作がブロックされるかどうかを判断します。

また、このクエリに基づいて警告ルールを構成し、そのアカウントに対する BLOB のコピー要求の通知を受けることもできます。 詳細については、「Azure Monitor を使用してログ アラートを作成、表示、管理する」を参照してください。

コピー操作の許可されるスコープを制限する (プレビュー)

コピー要求のソースを特定のスコープに制限しても問題ないと確信できる場合は、ストレージ アカウントの AllowedCopyScope プロパティをそのスコープに設定できます。

コピー操作の許可されるスコープを変更するためのアクセス許可 (プレビュー)

ストレージ アカウントの AllowedCopyScope プロパティを設定するには、ストレージ アカウントを作成および管理するためのアクセス許可が必要です。 これらのアクセス許可を提供する Azure ロールベースのアクセス制御 (Azure RBAC) ロールには、Microsoft.Storage/storageAccounts/write または Microsoft.Storage/storageAccounts/* アクションが含まれます。 このアクションの組み込みロールには、次のようなロールがあります。

これらのロールでは、Microsoft Entra ID を使用してストレージ アカウントのデータにアクセスすることはできません。 ただし、アカウント アクセス キーへのアクセスを許可する Microsoft.Storage/storageAccounts/listkeys/action が含まれています。 このアクセス許可では、ユーザーがアカウント アクセス キーを使用して、ストレージ アカウント内のすべてのデータにアクセスできます。

アカウントのコピー操作のスコープを制限することをユーザーに許可するには、ロールの割り当てのスコープをストレージ アカウントのレベル以上に設定する必要があります。 ロール スコープの詳細については、「Azure RBAC のスコープについて」を参照してください。

これらのロールを割り当てる際には、ストレージ アカウントを作成したり、そのプロパティを更新したりする機能を必要とするユーザーにのみ割り当てるように、注意してください。 最小限の特権の原則を使用して、ユーザーに、それぞれのタスクを実行するのに必要な最小限のアクセス許可を割り当てるようにします。 Azure RBAC でアクセスを管理する方法の詳細については、「Azure RBAC のベスト プラクティス」を参照してください。

Note

従来のサブスクリプション管理者ロールであるサービス管理者と共同管理者には、Azure Resource Manager の所有者ロールと同等のものが含まれています。 所有者ロールにはすべてのアクションが含まれているため、これらの管理者ロールのいずれかを持つユーザーも、ストレージ アカウントを作成および管理できます。 詳細については、「Azure ロール、Microsoft Entra ロール、従来のサブスクリプション管理者ロール」を参照してください。

コピー操作の許可されるスコープを構成する (プレビュー)

必要なアクセス許可を持つアカウントを使い、Azure portal、PowerShell、または Azure CLI を使って、コピー操作の許可スコープを構成します。

Azure portal で、既存のストレージ アカウントに対してコピー操作の許可スコープを構成するには、次の手順を実行します。

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

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

  3. [Permitted scope for copy operations (preview)] (コピー操作の許可スコープ) を次のいずれかに設定します。

    • [From any storage account] (任意のストレージ アカウントから)
    • "同じ Microsoft Entra テナント内のストレージ アカウントから"
    • [From storage accounts that have a private endpoint to the same virtual network] (同じ仮想ネットワークへのプライベート エンドポイントを持つストレージ アカウントから)

    Screenshot showing how to disallow Shared Key access for a storage account.

  4. [保存] を選択します。

次の手順