説明
コンテナーのpublicAccess: Blobは匿名ユーザーによるBlobの読み取りを許可し、ContainerはBlobの一覧取得も許可します。どちらも書き込み権限は付与しません。実際の匿名アクセスにはストレージアカウント側の許可も必要であり、アカウントのネットワーク制限も適用されます。
公開配布を目的としないログ、バックアップ、業務文書には、認可されたリクエストだけを許可してください。アカウント側で匿名アクセスを禁止すると、コンテナーの公開設定より優先されます。
想定される影響
- 匿名読み取りが許可されると、ファイル内の機密情報が漏えいする可能性があります。
- Blobの一覧からファイル名や保存構造が分かる可能性があります。
対処方法
- コンテナーの
publicAccessをNoneにし、匿名アクセスが不要なアカウントではallowBlobPublicAccess: falseも設定してください。既存の公開クライアントへの影響を先に確認してください。 - データへのアクセス権限とSASの範囲・有効期限を別途確認してください。匿名アクセスを禁止しても、既存の資格情報やSASの権限は失効しません。
- 意図して公開するデータを機密データから分離し、認可のないリクエストが拒否されることを確認してください。
例
既存のストレージアカウント名と有効なコンテナー名を指定してください。Blobサービス名はdefaultです。最初の例の公開設定は、アカウントが匿名アクセスを許可している場合にのみ使用できます。例を実行するためにアカウントの保護を解除しないでください。
変更前
bicep
param storageAccountName string
param containerName string
resource blob_container_example 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-02-01' = {
name: '${storageAccountName}/default/${containerName}'
properties: {
denyEncryptionScopeOverride: true
publicAccess: 'Container'
metadata: {}
}
}
Containerは、アカウントとネットワークの制限の範囲内で、匿名読み取りとBlobの一覧取得を許可します。
変更後
bicep
param storageAccountName string
param containerName string
resource blob_container_example 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-02-01' = {
name: '${storageAccountName}/default/${containerName}'
properties: {
denyEncryptionScopeOverride: true
publicAccess: 'None'
metadata: {}
}
}
Noneはこのコンテナーへの匿名アクセスを禁止します。認可されたリクエストに適用するデータ権限は別途管理してください。