NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Attribute-based Access Control (ABAC)調査隊

本記事は「NEXTSCAPE Advent Calender 2021」24日目です。 qiita.com

Azureには様々なセキュリティを保護するサービスがありますが、先日のアップデートで新たなセキュリティ機能として、Attribute-based Access Control (ABAC)がパブリックプレビューになっていたので、どんなものかと思い少し触れてみました。新機能に触ってみるのは今回が初になるので情報に間違いがあるかもしれない点はご了承くださいませ。

Attribute-based Access Control (ABAC)について

もともとAzureにはRBAC(Role-Base Access Control)というロールベースのアクセスコントロールをする機能があります。 ロールベース(Role-based)と書いてある通り、IDにRole=役割(何ができるのかをまとめたもの)を付与してリソースでできることを限定することで保護します。

今回ご紹介するABAC(Attribute-based Access Control)ですが、こちらのRBACの拡張機能になるものです。 名前の通りAttribute(=属性)という観点から、リソースに付与した属性に対して、アクセス権限を付与できるという意味になります。

以下のようなイメージになります

(画像はこちらから) f:id:mitsu_ns:20211222230508p:plain こちらはChandraさんをリソースグループのアクセス制御として、従来のRBACによる「Storage Blob Data Reader」の権限を付与し、blobのタグが「Project=Cascade」と設定されるもののみ参照できるというConditionを追加しております。 イメージにもあるようにproject=Cascadeと一致するもののみアクセスできるということです。

ABACのメリットについて

  • リソースへのよりきめ細かいアクセスを有効にする-同じストレージ内でも例にもあったようにタグ付けを行うことで、参照できるblobとで切り分けることが可能になります。
  • 作成および管理する必要のある役割の割り当ての数を減らす-ストレージ一つ一つにアクセス制御をかけずに、ABACを利用することで条件を付与することができるので、個別に権限を付与するよりも容易に管理することができます。
  • ビジネス上の意味を持つ属性の観点からアクセス制御ルールを表現する-現在の組織から移動になり管理するblobが変わる場合でも、組織名などを属性に付与することでその組織名を変更するだけでアクセス制御を切り替えることができます。

現在のABACが利用できるロールや属性

現時点(2021年12月)では下記のロールに対してABACが利用可能です。

  • Storage Blob Data Contributor
  • Storage Blob Data Owner
  • Storage Blob Data Reader
  • 一部カスタムロールでも使用可

また条件に付与する属性ソースとしては以下があります。

  • リソース-ストレージアカウント、コンテナ、またはBLOBとしてアクセスされているストレージリソースの既存の属性を指します。
  • リクエスト-ストレージ操作要求に含まれる属性またはパラメータを指します。
  • プリンシパル-カスタムセキュリティ属性を追加できる。

プリンシパル属性を利用する場合は以下が必要になります。

  • Azure AD PremiumP1またはP2ライセンス
  • 属性割り当て管理者の役割など、サインインしたユーザーに対するAzureADのアクセス許可
  • AzureADで定義されたカスタムセキュリティ属性

BlobStorageの場合は属性として以下があります。

  • Container name
  • Blob path
  • Blob index tags keys→例と同じことをしたい場合はこれ
  • Blob index tags

チュートリアル

Microsoftが提供しているチュートリアルがあるのですが、実際の設定については割愛させていただきます。 試してみたいという人はこちらから。 docs.microsoft.com

まとめ

今回はAzureに新しい権限管理の機能である「Attribute-Based Access Control」について紹介しました。 チュートリアルでもあるように、blobそれぞれにアクセス制御ができるというのは何かとメリットがありそうな気もします。 (私はこれを使っていいサービスが提案できるかの考えまでは至りませんでした。。。) ただ、タグを使っているのでサービスに影響を与えることなくセキュリティをより改善できるのはとても良いと思いました。 タグ付けの戦略なるものもあるようなので 、今後の活動になんでもいいからタグでグループ化させておくと、後々管理が便利になると思うので意識していこうかなと思います。

調査を通して強く感じたのはプリンシパル属性を利用した制御です。今回はP1またはP2ライセンスが私の環境では利用できなかったので試せなかったのですが、一つのグループアカウントをRBACで登録しカスタムセキュリティ属性を使ってユーザーそれぞれをまとめて管理出来たりしそうだなと思いました。

最後までお読みいただきありがとうございました。