皆さんこんにちは。SBT の RBAC おじさんこと、内苑です。
今回は、現在プレビュー機能として提供されている RBAC を使用したストレージアカウントのデータに対するアクセス管理について、簡単に設定方法や実際の利用イメージを紹介していきたいと思います。
これまで、アクセスキーの共有や、Shared Access Signatures(SAS)の共有により、ストレージアカウントへの接続をコントロールすることはできていましたが、以下の4つの組み込みロールがプレビュー提供され始めたことにより、Azure AD ユーザーに紐づく形でストレージアカウントへの接続のコントロールが可能になります。
動作を確認するにあたって、以下のリソースを準備します。
[rbactestblob] ストレージアカウント の [controllable] コンテナを選択します。コンテナ内にはテスト用の BLOB を配置しています。
[アクセス制御(IAM)] タブを開き、[追加] ボタンを選択します。
役割のリストから [ストレージ BLOB データ共同作成者(プレビュー)] を選択、付与対象のユーザーとして [blobcontributer@*****.onmicrosoft.com] を選択し、保存をクリックします。
これで設定は完了です。それでは実際の動作を見ていきましょう。
PowerShell を開き、Add-AzureRmAccount コマンドにて、先ほどの権限付与を行ったユーザーの資格情報を入力し、ログインします。
続けてストレージアカウント名、コンテナ名を変数定義し、ストレージ資格情報を格納したコンテキストを作成します。
ポイント
作成したコンテキストを基に、指定したコンテナ内の BLOB 一覧を取得するコマンドを実行します。
[controllable] コンテナに対して [ストレージ BLOB データ共同作成者(プレビュー)] の権限が付与されているため、BLOB 一覧を取得することができました。
それでは、同一ストレージアカウント内の [uncontrollable] コンテナに対して同じコマンドを実行した場合はどうなるでしょうか。
もちろん失敗しますね。ストレージアカウント内の全てのコンテナのデータ管理権限を付与したい場合は、ストレージアカウントの [アクセス制御(IAM)] にて権限付与を実施すればオーケーです。
プレビューでは BLOB, キュー のみに設定可能ですが、正式リリース後は全ての種類のストレージアカウントに対して制御が可能になることが期待できそうですね。
ストレージアカウントへの接続方法が、本機能のリリースにより更に柔軟になったのではないでしょうか。今回はわかりやすく(というより筆者がこれしか操れない)PowerShell で説明をしましたが、アプリ内にストレージアカウントへの接続スクリプトを組み込んで利用しているユーザーにとってはとても画期的な追加機能かと思います。
RBAC の柔軟性がより上がり、エンジニアの管理手法にも幅が出てきて益々 Azure が使いやすくなってきましたね!