説明
Azure Storage Container の container_access_type が blob または container の場合、アカウントが匿名アクセスを許可し、ネットワーク経由で到達できれば、認証なしで Blob を読み取れます。非公開ファイルや内部成果物が含まれると、情報が漏えいするおそれがあります。
blob は Blob の内容の匿名読み取りを許可し、container はコンテナー内の Blob 一覧の取得も許可します。これらの公開レベルが匿名の書き込み権限を与えるわけではありません。
想定される影響
- 内部文書やファイルが、認証なしで読み取られる可能性があります。
- container の公開レベルでは、Blob 一覧から保存されたファイルの名前や構成が分かる可能性があります。
対処方法
公開が不要なコンテナーの container_access_type を private に設定してください。アカウント全体で匿名アクセスが不要な場合は、アカウントの Blob 公開アクセスも無効にしてください。データへのアクセスに認証と最小権限を適用し、意図的に公開するデータを分離してください。必要なクライアントがアクセスでき、匿名リクエストが拒否されることを確認してください。
例
同じコンテナーの公開レベルを変更する抜粋です。storage_account_name に対応するプロバイダーバージョンの形式で、アカウントの設定は省略しています。
変更前
hcl
resource "azurerm_storage_container" "artifact_container" {
name = "vhds"
storage_account_name = azurerm_storage_account.example.name
container_access_type = "blob"
}
blob レベルのため、アカウントとネットワークの条件を満たす場合、Blob の内容を匿名で読み取れます。
変更後
hcl
resource "azurerm_storage_container" "artifact_container" {
name = "vhds"
storage_account_name = azurerm_storage_account.example.name
container_access_type = "private"
}
private はコンテナーの匿名読み取りを許可しません。認証済みユーザーや有効な SAS によるアクセス権限は別途管理してください。