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

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

uchizono-toshiteru

内苑 利映

1. はじめに

皆さんこんにちは。SBT の RBAC おじさんこと、内苑です。

今回は、現在プレビュー機能として提供されている RBAC を使用したストレージアカウントのデータに対するアクセス管理について、簡単に設定方法や実際の利用イメージを紹介していきたいと思います。

2. 機能の概要

これまで、アクセスキーの共有や、Shared Access Signatures(SAS)の共有により、ストレージアカウントへの接続をコントロールすることはできていましたが、以下の4つの組み込みロールがプレビュー提供され始めたことにより、Azure AD ユーザーに紐づく形でストレージアカウントへの接続のコントロールが可能になります。

  • ストレージ BLOB データ共同作成者(プレビュー)
  • ストレージ BLOB データ閲覧者(プレビュー)
  • ストレージ キュー データ共同作成者(プレビュー)
  • ストレージ キュー データ閲覧者(プレビュー)

ロールの命名通り、BLOB, キュー に対して共同作成者と閲覧者の権限が定義できるようになっています。付与対象は、サブスクリプションから単一のコンテナ単位まで細かく設定することが可能です。

詳細は、以下の公開情報をご参考ください。
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-auth-aad-rbac?toc=%2fazure%2fstorage%2fqueues%2ftoc.json

本記事では、Blob ストレージ内のコンテナに対するデータ管理の権限を Azure AD ユーザーに付与し、特定のコンテナ内のデータのみを操作できる、といったシナリオで進めていきます。

3. 設定方法

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

  • ストレージアカウント(ストレージアカウント名:rbactestblob)
  • 操作可能コンテナ(コンテナ名:controllable)
  • 操作不可コンテナ(コンテナ名:uncontrollable)
  • Azure AD ユーザー(UPN:blobcontributer@*****.onmicrosoft.com)
  • 最新の Azure モジュールをインストールした PowerShell

データ管理の権限を特定のコンテナに対して付与するステップは以下の通りです。

a. Azure ポータルからストレージアカウント内の対象コンテナのページに移動
b. [アクセス制御(IAM)] タブにて対象ユーザーに [ストレージ BLOB データ共同作成者(プレビュー)] の役割を付与して追加

これだけです。 早速設定していきましょう。


a. Azure ポータルからストレージアカウント内の対象コンテナのページに移動

[rbactestblob] ストレージアカウント の [controllable] コンテナを選択します。コンテナ内にはテスト用の BLOB を配置しています。

[rbactestblob] ストレージアカウント

b. [アクセス制御(IAM)] タブにて対象ユーザーに [ストレージ BLOB データ共同作成者(プレビュー)] の役割を付与して追加

[アクセス制御(IAM)] タブを開き、[追加] ボタンを選択します。

[アクセス制御(IAM)] タブを開く

役割のリストから [ストレージ BLOB データ共同作成者(プレビュー)] を選択、付与対象のユーザーとして [blobcontributer@*****.onmicrosoft.com] を選択し、保存をクリックします。

[ストレージ BLOB データ共同作成者(プレビュー)] を選択

これで設定は完了です。それでは実際の動作を見ていきましょう。

4. 動作検証

PowerShell を開き、Add-AzureRmAccount コマンドにて、先ほどの権限付与を行ったユーザーの資格情報を入力し、ログインします。

権限付与を行ったユーザーの資格情報を入力

続けてストレージアカウント名、コンテナ名を変数定義し、ストレージ資格情報を格納したコンテキストを作成します。

ストレージ資格情報を格納したコンテキストを作成

ポイント

これまで、コンテキストの作成時には[-StorageAccountKey] や、[-SasToken] といった引数を利用することにより、ストレージアカウントへの接続が可能でしたが、今回新たに登場した [-UseConnectedAccount] 引数を利用することにより、PowerShell にてログインしている資格情報を引用してストレージアカウントへ接続することが可能になりました。

作成したコンテキストを基に、指定したコンテナ内の BLOB 一覧を取得するコマンドを実行します。

指定したコンテナ内の BLOB 一覧を取得する

[controllable] コンテナに対して [ストレージ BLOB データ共同作成者(プレビュー)] の権限が付与されているため、BLOB 一覧を取得することができました。

それでは、同一ストレージアカウント内の [uncontrollable] コンテナに対して同じコマンドを実行した場合はどうなるでしょうか。

[uncontrollable] コンテナに対して同じコマンドを実行した場合

もちろん失敗しますね。ストレージアカウント内の全てのコンテナのデータ管理権限を付与したい場合は、ストレージアカウントの [アクセス制御(IAM)] にて権限付与を実施すればオーケーです。

5. まとめ

プレビューでは BLOB, キュー のみに設定可能ですが、正式リリース後は全ての種類のストレージアカウントに対して制御が可能になることが期待できそうですね。

ストレージアカウントへの接続方法が、本機能のリリースにより更に柔軟になったのではないでしょうか。今回はわかりやすく(というより筆者がこれしか操れない)PowerShell で説明をしましたが、アプリ内にストレージアカウントへの接続スクリプトを組み込んで利用しているユーザーにとってはとても画期的な追加機能かと思います。

RBAC の柔軟性がより上がり、エンジニアの管理手法にも幅が出てきて益々 Azure が使いやすくなってきましたね!



次回予告
  • 機械学習モデルのエッジデプロイ&実行( Custom Vision Service 編)



お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

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