Azure Managed Service Column <Azure運用コラム>

Azure Blobの紹介

Category: 実践編

2020.10.28

Azure Blob とは

Azure ストレージの最も基本的な機能である Azure Blob を紹介します。(Azure Blob の概要や他社ストレージとの比較については「AzureのBlobストレージとは?利用方法や他社ストレージサービスとの違いを解説」を確認ください。)

Azure Blob では、ブロック BLOBというデータを扱います。これは、画像やテキストなどいわゆるファイルのことです。従って、Azure Blob というのは一般的なオブジェクトストレージサービスということになります。

Azure Blob は、非常に多くのことができるのですが、本コラムでは特に以下の機能にフォーカスします。

  • ファイルのアップロード・ダウンロード
  • ネットワークによるアクセス制限
  • データ保護
  • ライフサイクル管理

前回のコラムにて作成したストレージアカウントを例に、各機能を紹介していきます。

ファイルのアップロード・ダウンロード

最も基本的な使い方として、ファイルのアップロード・ダウンロードを行ってみます。

まずはじめに、ストレージアカウント内に「コンテナー」を作成します。この入れ物のなかに、ファイルを保存することになります。作成済みのストレージアカウントを開き、左メニュー [コンテナー] から作成します。[パブリックアクセスレベル] の選択肢がありますが、コンテナー内のファイルを認証なしに公開するかどうかの設定です。規定の [プライベート] では、Azure の認証を通ったユーザだけがファイルにアクセスすることができます。(注釈1 : 認証について)

コンテナーを作成すると、コンテナーの画面にある [アップロード] からファイルのアップロードができます。

今度はファイルを選択して、[ダウンロード] からダウンロードも可能です。

他にも PowerShell や Azure CLI などを使ってコマンドベースで操作することもできますし、それらをラッパーした各プログラミング言語のライブラリも提供されています。

また、Azure Storage Explorer というツールも提供されており、エクスプローラのような使用感でファイル操作することもできます。IT 技術者でない方でもオブジェクトストレージを利用できるというのは、大きな特徴だと思います。

ところで、ファイルをクリックすると “https://${ストレージアカウント名}.blob.core.windows.net/test/テストファイル.txt” という URL が紐付けられていることに気づきます。この URL をクリックしても “404” が返ってきます。これは、コンテナーの作成時に [パブリックアクセスレベル] にて [プライベート] を選択したためです。 もし、他のパブリックアクセスレベルを選択してしまうと、Azure の認証を行っていない一般のユーザ、つまり、誰でもがファイルをダウンロードできてしまいますので、十分に注意してください。

ネットワークによるアクセス制限

次に、ネットワーク的なアクセス制限をかけてみましょう。指定したグローバルアドレス、もしくは、指定した VNET からのみ、ストレージアカウントにアクセスさせることができます。なお、先程の [パブリックアクセスレベル] は「ファイルを一般ユーザに公開するかどうか」という認証の話でしたが、今回はストレージアカウントへのアクセス制限の話であり、別物なので注意してください。ネットワークによるアクセス制限を行うと、許可されたネットワーク外からのアクセスは、認証手続きを行う前に拒否されます。(Azure ポータルにログインしていたとしても操作できなくなります。権限があれば自分自身で元に戻せますが。)

左メニューから [ファイアウォールと仮想ネットワーク] を選択します。 ストレージアカウントの作成時、[ネットワーク] 設定にて [パブリックエンドポイント] を選んでいた場合は、以下のような設定になっているはずです。

ここで、[許可するアクセス元] にて [選択するネットワーク] を指定すると、ネットワーク的なアクセス制限をかけることができます。以下のどちらか、もしくは、組み合わせた設定が可能です。

  • 特定のグローバルアドレスのみを許可
  • 特定の VNET のみを許可

今回は、仮想マシンの存在する VNET からのアクセスのみを許可してみます。以下の通り、[+既存の仮想ネットワークを追加] をクリックして、VNET とサブネットを指定します。(グローバルアドレスを許可したい場合は、[アドレス範囲] に入力します。) 最後に、[保存] をクリックします。なお、VNET を選択すると自動的にサービスエンドポイントが作成されます。サービスエンドポイントというのは VNET からストレージアカウントにアクセスするための口であり、これによって VNET 内のリソースはプライベートアドレスにてストレージアカウントにアクセスできるようになります。

この状態で、先程作成したコンテナーにアクセスすると、以下のようにエラー画面になります。グローバルアドレスを許可していないので、想定通りの動作です。このように、Blob ストレージに対して簡単にアクセス制限の設定を行うことができます。

また、オンプレ環境から VPN 経由・ExpressRoute 経由でアクセスさせることも可能です。その場合は、プライベートエンドポイントを使います。(ややこしいのですが、先程のサービスエンドポイントとは別物です。)プライベートエンドポイントは、「VNET 上に」作成できるインターフェイスのことで、固有のプライベートアドレスを持ちます。このインターフェイスはストレージアカウントに紐付けることができ、オンプレ環境からは、このインターフェイスのプライベートアドレスにアクセスすることで、ストレージアカウントにアクセスすることができます。

データ保護

左メニュー [データ保護] からデータを保護するための設定を行うことができます。ストレージアカウント内のデータは、ユーザの指定したレプリケーションレベルで複数コピー、冗長化されていますから、障害発生によってデータが失われることへの対策は出来ています。それに対して、本設定は、ユーザが誤って削除してしまった場合など、オペレーションミスなどの対策のために設定します。

[データ保護] から “Turn on versioning for blobs” にチェックを入れて、[保存] をクリックします。これにより、バージョン管理機能が有効になります。

以降、コンテナ内の Blob に変更が行われると、以下の通り以前のバージョンが記録されます。この画面から、指定したバージョンに戻すことができます。削除してしまった場合でも、戻すことができます。

バージョン管理機能は便利なのですが、変更分がすべてデータとして保存されますので、ストレージアカウントのデータ利用料も当然増えます。頻繁に変更が行われるデータが保存されているストレージアカウントで有効にする際には、十分に注意してください。

ライフサイクル管理

ルールベースのポリシーを設定することで、「x日経過したらストレージクラスを変更」「x日経過したら削除」といった Blob のライフサイクル管理を行うことができます。ストレージクラスには、「ホット」「クール」「アーカイブ」があり、後者になるほどダウンロードするのに時間がかかってしまうのですが、その代わり、料金は格安になります。あまり利用しなくなったファイルなどをクール、アーカイブにすることでコスト削減が可能になります。

左メニュー [ライフサイクル管理] からポリシーを追加します。

ポリシー名を入力します。

if-then 形式でルールを設定します。 [結果] は [クールストレージに移動する]、[アーカイブに移動する]、[BloB の削除] の3つが選べます。以下は、「30日経過したらクールストレージに移動し、365経過したら削除する」というルールです。

ポリシーの適用対象を特定のコンテナのみに制限することも可能です。

最後に、[追加] をクリックすることで、作成したポリシーが適用されます。

まとめ

基本的な機能のみとなりますが、「Blob ストレージで出来ること」を紹介しました。 Blob ストレージを利用することで簡単にオブジェクトストレージを使えるようになりますが、大事な情報を保存する場所ですので、設定内容はよく理解する必要があります。 特に、アクセスレベルやネットワークのアクセス制限に関しては、設定内容によっては情報漏えいに繋がる可能性もありますので、用途や環境に合わせて適切に設定してあげる必要があります。

注釈1 : 認証について

認証方法は「Azure AD ユーザ」「アクセスキー」のどちらかを選択できます。Azure ポータルから操作する場合は、バックグラウンドで認証が行われるため、あまり気にする必要はありませんが、CLI、API、及び、Storage Explorer を使う場合は認証設定が必要です。セキュリティ的には Azure AD ユーザの利用が推奨されています。また、Azure AD ユーザには適切なロール(権限)が割り当てられている必要があります。(本文に戻る

Tag: Azure Blob

関連記事

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php