クラウドエンジニアブログ

RBAC を使用した ストレージアカウントデータ へのアクセス管理 (GA)

uchizono-toshiteru

内苑 利映

1. はじめに

皆さんこんにちは。内苑です。
以前当ブログにて紹介したストレージアカウントに格納されているデータへのアクセスを RBAC で制御する機能が、2019/03/21 に一般提供(GA)されました。パブリックプレビューからの変更点や、追加点などを簡単にご紹介したいと思います。


2. 本機能のおさらい

詳しくは 私の過去のブログ記事 を参照いただければと思いますが、本機能を利用することにより、従来のアクセスキーの共有や、Shared Access Signatures(SAS)の共有を行うことなく、Azure AD ユーザーに付与される権限によってストレージアカウント内のデータへのアクセスを制御することができます。

これにより、ユーザー固有の情報(ID/Pass/Device など)を用いてセキュアで柔軟なデータアクセスを実現することが可能になります。


3. 前回の記事から追加された要素

GA に伴い、以下の組み込みロールが本機能に追加されました。

  • ストレージ BLOB データ所有者
    • Azure Data Lake Storage Gen2 にて POSIX アクセスの制御設定を可能にするための権限
  • ストレージ キュー データのメッセージ プロセッサ
    • キュー内のメッセージの管理を行うための権限
  • ストレージ キュー データのメッセージ送信者
    • キュー内のメッセージを送信するための権限

ストレージ BLOB データ所有者の権限についてもう少し掘り下げて情報を確認したところ、公開情報 に掲載されていた説明では、前述したとおり Azure Data Lake Storage Gen2 にて コンテナ/データアクセスの制御設定を可能にすると記述がありましたが、不変ストレージのポリシーなどについても操作が可能になっているようでした。

以下はポータルからアクセス許可設定を確認したものの一部となりますが、Immutability Policy のアクションが許可されていることがわかります。




せっかくなので、本ブログ記事では、この新しく追加された所有者ロールで特定フォルダに対してアクセス権を付与する動作を確認してみようと思います。


4. 動作確認

動作を確認するにあたって、以下のリソースを準備しました。

  • Azure Data Lake Storage Gen2(ストレージアカウント名:rbactestblob02)
  • Microsoft Azure Storage Explorer
  • ファイルシステム(ファイルシステム名:test)
  • フォルダ(フォルダ名:test-folder)
  • ファイル(ファイル名:test-file.txt)
  • Azure AD ユーザー(UPN:blobowner@*****.onmicrosoft.com)
    • 対象のストレージアカウントに対して以下の権限を付与
      • ストレージ BLOB データ所有者
      • 閲覧者(Storage Explorer にてストレージアカウントを表示させるために必要)
  • Azure AD ユーザー(UPN:blobreader@*****.onmicrosoft.com)
    • 対象のストレージアカウントに対して以下の権限を付与
      • ストレージ BLOB データ閲覧者
      • 閲覧者(Storage Explorer にてストレージアカウントを表示させるために必要)



Storage Explorer にて、[blobowner] のアカウントを用いてサインインを行い、[rbacstorage02] 内のフォルダを選択し、[Manage Access... ] をクリックします。



アクセスリストが表示されるので、ここに [blobreader] の UPN を入力し、Write / Execute の接続を許可して [Save] をクリックします。



Storage Explorer の画面下部に、権限付与が成功した旨が表示されます。



フォルダにデータを追加するには、こちら のアクセス許可シナリオを参考に、各階層に対して同様にアクセス権を付与していく必要があります。

この設定により、[blobreader] は [test-folder] に対してファイルを操作する権限を得ました。 それでは先ほど同様、今度は [blobreader] のアカウントを用いてサインインを行い、[test-folder] 内にファイルをアップロードしてみましょう。





[test-file] がアップロードされ、成功のメッセージが画面下部に表示されました。[blobreader] には Blob データを操作する権限を Azure AD 上では付与することなく、特定のフォルダに対して更新操作を行うように設定ができました。 [blobowner] から何のアクセス権も付与されていないデータ閲覧者がデータのアップロードを行っても、以下のようにエラーメッセージが表示され、失敗します。



5. まとめ

通常の Blob ストレージでは、コンテナに対して権限を設定するところまででしたが、Azure Data Lake Storage Gen2 の場合、ファイル単位でアクセス管理を行うことができます。今回紹介した [ストレージ BLOB データ所有者] のロールを用いてファイルシステム単位でアクセス管理を行うユーザーを定義し、さらにその中でフォルダ、ファイル単位のアクセス許可を行う、というところまで細かく設定ができるようになりました。あまり権限周りの設計を細かくすると管理負荷が大きくなる懸念はありますが、データに対しての要件が複雑でシビアなシステムを利用する際には効果を発揮すると言えそうです。

今回紹介した動作の中の、[blobowner] がフォルダ、ファイル単位で付与したアクセス権は Blob 内部に保存されたデータに対するアクセス権となるため、Azure ポータルでは管理ができない点に十分注意して運用する必要がありそうです。



次回予告
  • データ移行ツールいろいろ~Database Migration Guide


【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録