目次
AWS IAMとは?
「認証と認可」の違いについて考えたことはありますか?
日常的にも様々な認証や認可があります。
例えば銀行口座を開設するときに本人確認として免許証を提示した場合、これはあなたが誰で、本人なのかを確認しています。
ですが、車を購入するときに免許証の提示を要求された場合、これはあなたが運転をする権限があるのかを確認しています。
すなわち、あなたが誰なのか、そしてあなたが何の権限を持っているのかは別のサブジェクトとなります。
では、みなさんAWSのIAMはご存知でしょうか?
IAMはIdentity and Access Managementの略称でありAWSのリソースへのアクセスをセキュアに制御します。
AWS IAM は権限を管理しており、「認証と認可」はこのサービスを理解する上で非常に重要になります。相手が誰なのか、そして誰に権限を付与するのか、AWSを安全に利用する上で重要となります。
早速ですが、「認証と認可」という言葉を念頭に、AWS IAM以下5つの要点に絞って解説していきたいと思います。
AWS IAM User
初めに「Root User」及び「IAM User」について軽く紹介します。
「ルートユーザー」はAWSのアカウントに対し、すべての権限を持ちます。そのためAWS IAMのユーザーガイドの通り、セキュリティ面から見ても日々の業務においてルートユーザーの使用は推奨されていません。そこで通常はルートユーザーでIAMユーザーと呼ばれる個別のユーザーを作成し、IAM ユーザーに作業で必要になる権限のみを付与して運用することが一般的とされています。
IAMユーザーはAWSリソースにアクセスするためのエンティティ(人やサービス)であり、AWSアカウントの範囲内にて個別で作成できるユーザーです。ユーザーと呼ばれますが、必ずしも人間が利用する必要はなく、プログラムによるアクセス用で使用される場合もあります。
では次にIAMユーザーがどのようにAWSのリソースにアクセスするのかについて説明していきます。
◆ アクセス認証方法
IAMユーザーにアクセスする認証方法は2つあります。
1. AWSマネジメントコンソールへのアクセス(パスワード)2. プログラムによるアクセス(アクセスキー)
(例)個人PCからIAM ユーザーと同じ権限を持つことができ、遠隔操作でEC2などのインスタンスを作成することが可能となります。
これら二つの認証方法は冒頭に述べた「認証」と同じ役目を果たしており、ユーザー、システム、アプリケーション等、自身を正確に識別する情報です。アクセスキーのような資格情報を提供することでアクセスが可能となります。
このようにIAMユーザーはAWSリソースへのアクセスに対して「誰」であり、アクセスキーはプログラム的にそのユーザーとして「適当」であるかの情報を提供しています。
◆ AWS IAM Group
AWS IAM Groupとは複数のIAMユーザーの集まりであり、権限管理等をよりシンプルにするメリットがあります。また、複数のIAMユーザーに一度に同じ権限を付与することが可能であり、一つのユーザーを複数のグループに割り当てるなどのことも可能です。のちに説明します、AWS IAMポリシーを、一度に複数のユーザーに適用する際にも便利です。
AWS IAMポリシー
AWS IAMポリシーとはAWSリソースの操作権限、アクセス許可権を表したものです。IAMユーザーといった評価主体にアタッチして使用するものであり、ユーザーがどのリソースに対してどの操作が許可されているのか、もしくは拒否されているのかを明示的に記述するものです。つまりAWSのサービスやリソースへの「できること」や「できないこと」のルールが定義され、書かれているドキュメントになります。
AWS IAMポリシーはJSON形式で記述される設定ファイルであり、このファイルはAWSに保管されます。保管されるIAMポリシーには管理ポリシーが2種類あり、このポリシーを使用することで特定のサービスやリソースに対するアクションの認可をします。
1. AWS管理ポリシー2. カスタマー管理ポリシー
IAMポリシーの例
「S3バケットへの読み取り専用アクセスを許可するポリシー」をJSON形式でドキュメント化するとします。これをIAMユーザーAにアタッチすることで、IAMユーザーAはS3バケットへの読み取りが可能となります。
IAMポリシーは、AWSリソースへのアクセス権限を詳細に定義します。適切なポリシーを作成・適用することで、必要な権限だけを適切なエンティティに付与し、AWS環境のセキュリティを向上させることができます。
しかし各IAMユーザーに対し、それぞれIAMポリシーを個別で適用するのは管理の複雑さ等を考慮するとあまりお勧めできません。
そこでIAMロールを利用することで管理を円滑に進めることができます。複数のIAMポリシーをIAMロールにアタッチすることで、そのポリシーに書かれている権限がロールに与えられます。
もう少し詳しく説明していきます。
AWS IAMロール
ロール(英表記「Role」)とは役割や任務を意味します。一時的に特定の権限を持つことができる「役割」や「任務」のようなものであり、一時的に権限を付与します。主にIAMユーザーやAWSのサービス、さらには外部のユーザーやサービスが、AWSのリソースにアクセスする際にも使用されます。
仕組みとしてはユーザーやアプリケーションがロールを一時的に引き受けることで、そのロールに関連付けられたアクセス許可を受けることができるというものです。ロールを引き受けるエンティティに一時的なセキュリティトークンを提供することで永続的な認証情報を持つ必要がなくなります。
例えば一時的に特定のリソースにアクセスする必要があるサービスやアプリケーションに使用されます。また、IAMロールはユーザーやグループとは異なり、有効期限がついている短期的な認証となっており、アクセスキーやパスワードなどの固定的な認証情報を直接共有する必要がないため、情報漏洩といったセキュリティのリスクを低減させることができます。
まとめ
以上はAWS IAMについての解説となりました。
AWS IAMにてユーザーがアカウントを付与される際、例えば「管理者ページにアクセスする権限」があるのかどうかを判断します。
また、ユーザーがアカウントにログインする際、ユーザー名とパスワードを入力し、ユーザーが認証されるべきかを判断します。
冒頭に戻ると、AWS IAMにおいて認証は「あなたが誰で本当に自分なのか」という問いへの答えであり、認可は「あなたはこれを扱う権利があるのか」という問いへの答えとなります。AWSではこの認証と認可の二段階を組み合わせることでシステムをセキュアに、ユーザーのアクセスを管理することができるのではないでしょうか。
以上、最後までご覧いただき、ありがとうございました。