検索
連載

「AWS IAM」の「ABAC」で、ポリシーを変更せずにユーザー/リソース数の多いプロジェクトに対応するAWSチートシート

「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS IAM」の「属性ベースアクセスコントロール」(ABAC)について解説する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。

 AWSを利用する多くの方にとってなじみのある「AWS Identity and Access Management」(IAM)の一歩踏み込んだポリシー管理の手法として、記事『AWS活用のガードレール「IAM」の「Permissions Boundary」でアクセス境界を設定するには』ではPermissions Boundaryを利用したアクセス許可の境界を設定する方法を紹介しました。

 今回の記事では「IAMエンティティ」(IAMユーザーまたはIAMロール)やAWSリソースにタグを付与することで行う属性ベースのアクセスコントロール「ABAC」(Attribute Based Access Control)について解説します。

「ABAC」とは?

 ABACとは「属性ベースのアクセスコントロール」という名前の通り、ユーザーやリソースの属性に応じたアクセス制御によって、実行できる機能やアクセスできるサービスを限定する手法です。

 AWSの場合、この「属性」としてIAMエンティティやAWSリソースの「タグ」を用いることができます。

 また、ABACと対比されるアクセス制御の手法に「役割ベースのアクセスコントロール」(RBAC)があります。RBACも名前の通り、管理者や開発者といった役割ごとに異なるアクセス権限を付与する方法です。

ABACを利用するメリット

 ロールベースでのアクセス制御は比較的作業が簡単ですが、兼務などの場合にはユーザーやロールがどんどん増えていったり、アクセス許可を最小にするには新しいリソースを作成するたびにポリシーの修正が必要(動的に権限を付与することはできない)になったりといったデメリットが存在します。

 タグを利用したABACによるアクセス制御のメリットは、新しいリソースの作成時にポリシーを修正しない最小アクセスの実現(動的な権限付与ができる)ことです。また、職務機能ごとに異なるポリシーを作成する必要がないので、作成しなければならないポリシーの数も減らすことができます。

タグを利用したABACの設定手順

 ABACを利用する方法を確認していきましょう。今回は下記の手順で作業します。

  1. テスト用の「Amazon EC2」インスタンスを2台起動
  2. テスト用のIAMユーザーを作成
  3. ABACの条件を満たす場合のみEC2インスタンスを操作できることを確認

1.テスト用のEC2インスタンスを2台起動

 まずABACを利用したIAMユーザーからの操作を検証するためのリソースとしてEC2インスタンスを作成します。

 今回はプロジェクト名を「Apple」「Banana」として、下記のような名前でインスタンスを作成しました(図1)。

  • Project Apple Instance
  • Project Banana Instance


図1 ABAC検証用に作成したEC2インスタンス

 また、各インスタンスには下記のようにタグを付与しておきます。

インスタンス名 タグキー タグ値
Project Apple Instance Project Apple
Project Banana Instance Project Banana

2.テスト用のIAMユーザーを作成

 続いてEC2インスタンスを操作するためのIAMユーザーを作成します。今回は「abac-user-apple」という名前でIAMユーザーを作成しました(図2)。


図2 ABAC検証用に作成したIAMユーザー

 また、今回ユーザーへ付与するIAMポリシーは下記の通りです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:DescribeTags"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Project": "xxxxx",
                    "aws:PrincipalTag/Team": "Teamxxxxx"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}
※xxxxxには対応するプロジェクト名(AppleまたはBanana)を記載

 1つ目のポリシーでは全てのリソースを対象にEC2インスタンスの起動と停止、タグの読み取り権限を付与していますが、「Condition」でタグを指定することで、対象となるリソースやリソースに対するアクションをリクエストできるプリンシパルを限定しています。

 また、作成したIAMユーザーには下記のようにタグを割り当てておきましょう。

IAMユーザー タグキー タグ値
abac-user-apple Team TeamApple
abac-user-banana Team TeamBanana

3.ABACの条件を満たす場合のみEC2インスタンスを操作できることを確認

 「abac-user-apple」からEC2インスタンスを操作してみましょう。


図3 「abac-user-apple」で「Project Apple Instance」を停止した場合


図4 「abac-user-apple」で「Project Banana Instance」を停止した場合

 ご覧の通りEC2インスタンスにタグ付けしているプロジェクト名とIAMユーザーにタグ付けしているのとチーム名が一致している場合のみインスタンスが操作できることを確認できました。

終わりに

 今回はIAMエンティティとAWSリソースにタグを付与することで行うABACを紹介しました。

 ABACを採用することでポリシーを変更することなく利用するリソースのスケールに対応できるので、ユーザー数やリソース数の多い煩雑なプロジェクトで有効なアクセス制御方式として覚えておいてください。

筆者紹介

天野盛介(あまのせいすけ)

株式会社システムシェアード

マルチクラウドへの閉域接続サービスのサービスマネジメント業務に従事した後、AWS案件での基盤構築支援などを担当。社内では、検証・学習用にAWSを完全定額で利用できるサービス「安心サンドボックス」の立ち上げや東京ITスクールのAWS研修におけるコンテンツ開発、Java・AWS研修の講師などを歴任。


Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. 1年前と比べて1Tbpsを超えるDDoS攻撃が1885%増加、今すぐできる対策は? Cloudflare
  2. 米ホワイトハウス、“懸念国”への半導体輸出、AI規制を発表 日本含む18カ国は規制対象外
  3. 終わらせましょう。複雑過ぎるKubernetes/クラウドネイティブが生む心理的安全性の低下を――無料でクラウドセキュリティの勘所が分かる130ページの電子書籍
  4. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  5. 「Appleの暗号化アルゴリズム」を盗用し、2カ月以上検出されなかったステルス型マルウェアの正体とは
  6. Google Cloud、2025年のサイバーセキュリティ予測を発表 AIがサイバー攻撃にもたらす影響とは?
  7. 経営層の約7割が「セキュリティ対策は十分」一方で6割以上がインシデントを経験、1位の要因は?
  8. “ゼロトラスト”とトラスト(信頼性)ゼロを分かつものとは――情報セキュリティ啓発アニメ「こうしす!」監督が中小企業目線で語る
  9. 2025年に押さえるべきセキュリティの重要論点をガートナーが発表 新しいリスク、脅威、環境の変化、法規制などの動きを把握する指標に使える
  10. よく聞く「複雑化するサイバー攻撃」は具体的にどう複雑なのか? 一例を医療系企業のランサム事例とともに解説
ページトップに戻る