【AWS SAA対策】IAMをマスターしよう

今回からAWS SAA (Solution architect associate)合格のための記事を書いていきます。
重要な項目ごとにポイントを絞って解説していくので自分が苦手だと感じている範囲をチェックしてみてください!

第一回目はIAMについてです。

クラウドプラクティショナー試験の対策については以下のNoteで解説しています。

note(ノート)
【クラウドプラクティショナー】未経験から一発合格するための勉強法|おもちプログラミング 先日AWSの認定資格の一つであるクラウドプラクティショナーの試験に合格したので、合格までにどのような勉強をしたのかをまとめておきます。 試験を受けようとしている方...
目次

IAMとは

IAM(Identity and Access Manager)はユーザーとグループを管理するサービスです。もう少し具体的に言うと、ユーザーやグループの権限を管理します。

使えるサービスを制限したりできます。

まずはAWSのユーザーとグループとは何なのかから説明します。

ユーザーとグループ

上の画像のようにAさんからFさんの6人がいます。A, B, Cの3人は開発者グループに所属していてD, Eは保守運用グループに所属しています。
Fさんはどのグループにも所属しておらず、C, Dは二つのグループに所属しています。

ここでは次のポイントを押さえてください!

  • ユーザーは複数グループに所属することができる
  • ユーザーはグループに所属しなくてもOK
  • グループの入れ子はできない

IAMではユーザーやグループの権限を管理すると言いましたがどのように管理するのでしょうか。
お気づきの方もいると思いますが説明します!

権限の管理

上の画像のように、グループやユーザーに権限を設定することで管理します。

この例だと開発者グループに所属するユーザーはサービス1, 2を利用可能で保守運用グループに所属するユーザーはサービス3,4を使用できます。

またグループだけではなくユーザーに対して直接権限を設定することもできます。

さらにC,Dはどちらのグループにも所属しているのでサービス1,2,3,4を利用できます。

この時にユーザー、グループに割り当てる権限情報を記述したものをIAMポリシーと言います。

IAMポリシーとは

先ほど説明したようにユーザー、グループに対してJSON形式で書かれたポリシーを割り当てて権限を管理することができます。

このポリシーをIAMポリシーと言います。

IAMポリシーの例

IAMポリシーの例を一つ挙げます。中身はわからなくても大丈夫です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:region:account-id:instance/instance-id"
        }
    ]
}

これはEC2のインスタンスの起動と停止を許可するIAMポリシーです。

IAMポリシーには必須の要素とオプションの要素があるので説明します。

IAMポリシーの要素

まずIAMポリシーに必須の要素です。

Version

ポリシーを記述する言語のバージョンです。現在は”2012-12-17″のみがサポートされているのでここは全てのポリシーで共通です。
(もちろんアップデートされた場合は適宜変更してください)

Statement

本文みたいなものです。Statementの中に要素が複数入ります。

Effect

アクセスの許可/拒否を指定します。AllowかDenyで記述します。
特定のサービスの使用を許可する場合はAllow、拒否する場合はDenyを指定します。

Action

許可または拒否するアクションを指定します。

先ほどの例だとEffectと合わせて、
ec2:StartInstances (EC2インスタンスの起動)とec2:StopInstances (EC2インスタンスの停止)を許可しています。

Resource

ポリシーが適用されるリソースを指定します。

以上がポリシーに必須の要素です。

オプションで

  • ID : ポリシーの識別子
  • Sid : Statementの識別子
  • Principal : ポリシーが適用されるユーザー/アカウント/ロール

などもあるので必要に応じて記述してください。AWS SAAの試験で大事になってくるのがStatementの中の必須要素なのでしっかりと覚えておきましょう。

IAMポリシーをグループやユーザーにアタッチして権限を管理していきますが、必要最小限のサービスのアクセスだけを許可して不要なサービスは使用できないようにしましょう。

これを最小権限の法則と呼びます。

また、グループではなくユーザーに直接ポリシーをアタッチすることができますがこれをインラインポリシーと呼ぶこともあるので覚えておくといいと思います。

IAMのパスワードポリシー

IAMで作成したユーザー情報を適切に管理するためにパスワードポリシーを設定できます。
パスワードポリシーには以下のようなものがあります。

  • 最小文字数
  • 必要な文字種別
  • 一定期間でパスワードの変更を必須にする
  • パスワードの再利用を禁止する

適切なパスワードポリシーを設定してセキュリティを高めることが非常に重要です。AWSは便利なサービスですが使用にあたり非常にコストがかかるものもあります。

ユーザー情報が漏れてしまい不正に利用されて高額請求が来てしますと大変なのでアカウントの管理は慎重に行いましょう。

特にAWSアカウントを作成したときにデフォルトで作成されるユーザー(ルートユーザー)は支払い情報の設定以外などでは使わないようにしましょう。
代わりにIAMユーザーを作成して実際のサービスの利用などを行っていくことがベストプラクティスです。

パスワードポリシーを設定して強力なパスワードを利用するだけでは不安な方は多要素認証(MFA)を利用することも可能です。

MFA (Multi-Factor Authentication)は、パスワードとデバイスによって認証する方式です。

多要素認証の補足

多要素は
知っていること(What you know) + 持っているもの(What you have)
のことです。

仮想MFAデバイス


MFAで使われることが多いのが仮想MFAデバイスです。仮想MFAデバイスは実際のハードウェアではなくハードウェアをエミュレートするソフトウェアです。

自身のスマートフォンなどにソフトウェアをインストールすることでそのデバイスがMFAデバイスとなります。

よく使われるものをいくつか紹介します。

Authy

AuthyはスマホやPCなど様々なデバイスで使用できる仮想MFAデバイスです。一つのデバイスで複数の認証用トークンをサポートしています。

Authy

Google Authenticator

Google Authenticatorはスマホで利用可能な仮想MFAデバイスです。

Google Authenticator

IAMロール

IAMロールはAWSサービスに権限を割り当てるために使用します。AWSを使ったことがない方にはわかりにくいかもしれませんが、AWSにはEC2やLambdaなど他のAWSサービスを使用するものがあります。

これらのサービスに権限を与えるためにIAMロールを使うことができます。

IAMロール

IAMロールの使い方の例は上記画像をみてください!

EC2に対してS3からの読み取りを許可するIAMロールをアタッチしています。

一般的なIAMロール

一般的によく使われるIAMロールは、

  • EC2インスタンスロール
  • Lambda functionロール
  • Cloud Formation向けのロールなどがあります。

何も他のAWSサービスにアクセスして利用するものなのでその権限管理のためにIAMロールが利用されます。
それぞれのサービスの詳細は今後の記事で解説します。

IAMのセキュリティを高めるために

IAMのセキュリティを高めるために使用できるツールを紹介します。試験でも聞かれるポイントなので押さえておきましょう!

IAM Credential Report

Credential Reportではアカウントが持つユーザーや認証情報のレポートなどアカウントレベルの情報を確認することができます。

認証情報レポートを使用して監査やコンプライアンス作業に役立てることができます。この監査に使用できる点は試験でよく聞かれます。

詳しい情報は公式ページを確認してください!

IAM Access Advisor

Access Adivisorではユーザーに許可されているサービスとそれぞれのサービスに最後にアクセスした時間を確認することができます。

セキュリティの向上にも役立つほか、許可はされているが最近アクセスされていないサービスの権限を外すなど権限の見直しなどにも使えます。

Access Advisorの情報は4時間以内に更新されるため、5分前などの直近すぎるアクセス情報は反映されていない可能性があるため注意してください。

こちらも詳しい情報は公式ページで確認しましょう!

IAMのまとめ

IAMのまとめをします。出てきた語句を簡単に振り返りましょう。

IAMユーザー

物理ユーザー一人につき一つのIAMユーザーを使用するのがベストプラクティスです。IAMユーザーはパスワードを持ちます。

IAMグループ

IAMユーザーをまとめたものです。グループの入れ子はできません。

IAMポリシー

ユーザーやグループの権限をJSON形式で記述したものです。

IAMロール

EC2やlambdaなどAWSのサービスの権限を記述するものです。

多要素認証

パスワードとデバイスによる認証。仮想MFAデバイスがよく使われます。

IAMのセキュリティ

監査にはIAM Credential ReportやIAM Access Advisorが使われます。

おすすめ文献

詳しいことが知りたい方や書籍で勉強したい方におすすめの参考書を紹介します。

tenjiprogramming
20代エンジニア。
メインで使用している言語はJava/JavaScript/TyoeScript/react/C言語
AWSなどクラウド周りも経験あり。
楽しいをモットーに記事を書いています。
Noteではサンプルコード付きのゲームの作り方など様々な内容を公開しています。
そちらも是非ご覧ください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次