AWSの請求情報のみ参照できるユーザを作る - IAMでAWSのアクセス権管理を行う

AWSには、サービスとリソースに対するアクセス権の管理を行うための、IAM(Identity and Access Management) という機能があります。
このIAMを利用したアクセス権管理の方法に関して説明します。

IAM ( Identity and Access Management ) とは

AWSの利用を開始する際、当然ながらAWSアカウントを作成するわけですが、このAWSアカウントはLinuxのルートユーザのようなもので、全てのユーザをこのアカウントでAWSにアクセスさせるのには問題があります。

例えば、経理部門が請求情報を確認するために、AWSにアクセスした場合に、誤ってEC2のインスタンスを停止してしまうといった事が(可能性は少なくとも)あり得ます。

通常、こういった問題に対処するには、個々のユーザ毎に異なるアカウントを作成し、そのユーザが必要となる権限を割り当てます。Active DirectoryやLinuxでのユーザ/グループを利用したアクセス管理等がこれにあたります。

AWSではIAM ( Identity and Access Management ) という、AWSサービスとリソースに対するアクセス権の管理を行うための機能を備えています。

以下ではこのIAMを利用した権限管理手順に関して簡単に説明します。

料金

料金 - AWS Identity and Access Management (IAM) Preview Beta(AWS クラウドのアクセス制御) にあるように追加料金なしで利用できます。

管理の方法

ユーザ、グループによるアクセス管理が行える場合、通常は以下の方針でアクセス管理を行います。

  • グループを作成し、このグループに対してパーミッションを割り当てる
  • ユーザ自体にパーミッションを割り当てる事はせず、ユーザが所属するグループを設定する。

このような管理を行う理由としては、

  • 同一のパーミッションを複数ユーザに割り当てるのが簡単
  • 複数ユーザのパーミッションを個々に変更する必要がない

通常は所属部署等でパーミッションは決まるはずで、個々のユーザ毎に設定を変更しなければならないといった要件は殆どないでしょう。部署内で別のパーミッションが必要となるといった場合には、部署に対応するグループ+別のグループ ( 管理者と非管理者等 ) を割り当てるといった対応をするのが普通です。
このようにユーザに複数のグループを割り当てて権限管理を行う場合がある事を踏まえ、個々のグループに対しては、最低限の権限を割り当てるのが一般的です(システム管理者等の全ての権限を有するグループ等例外もあります)。

以下では、ユーザ・グループを作成するにあたって、

  • AWS管理者 ( すべての権限を有する )
  • 経理担当 ( 請求情報と利用状況のみ閲覧可能 )

という2種類のユーザを作成してみます。
 

グループの作成

上で書いたように、権限管理を行う場合の基本はグループをどう作成するかという事になるため、ユーザを作成する前に先ずグループを作成します。

管理者グループの作成

AWSの管理を行うためのグループを作成します。以下手順を示します。

  1. AWSにログインします。
  2. IAM アイコンをクリックします。
  3. 左メニューから Groups をクリックします。
  4. [ Create New Group ] ボタンをクリックします。
    Groups
  5. Create New Group WIzard 画面が表示されるので、グループ名を入力して [ Continue ] ボタンをクリックします。
    Create New Group Wizard:Step1
  6. Set Permissions 画面に遷移するので、パーミッションを設定します。管理者グループの権限としてAWSのフルアクセス権を設定します。Select Policy Template から Administrator Acccess を選択 ( [ Select ] ボタンをクリック ) します。
    Create New Group Wizard:Step2
  7. Set Permissions 画面に遷移します。ここでポリシー名と、ポリシー設定を編集可能ですが、変更の必要はないため [ Continue ] ボタンをクリックします。
    Create New Group Wizard:Step2-2
  8. Review 画面に遷移します。問題なければ [ Create group ] ボタンをクリックしてグループを作成します。
    Create New Group Wizard:Step3
  9. Groups 画面に戻ります。作成したグループがリスト表示されている事が確認できます。
    Groups

ユーザの作成

次に ( 管理者 ) ユーザを作成します。

  1. 左メニューから Users をクリックします。
  2. [ Create New User ] ボタンをクリックします。
    Users
  3. Create User 画面が開くので、ユーザ名を入力します ( 複数入力可 )。入力が完了したら [ Create ] ボタンをクリックします。
    Generate an access key for each User はチェックしたままにしています。( ※個々のユーザ毎にアクセスキーを生成します。ここをチェックするかどうかは、セキュリティや運用要件等によって適宜設定して下さい。)
    Create User
  4. ユーザ作成が成功すると、その旨画面表示が行われます。
    ここでは Security Credentials ( ファイル ) がダウンロード可能です。必要に応じて(CSV)ファイルをダウンロードして下さい。
    ファイルにはRESTアクセス等を行う際に必要となる Access Key Id、及び、 Secret Access Key情報が含まれています。
    Create User
    確認、及び、ダウンロードが完了したら [ Close Window ] ボタンをクリックします。
  5. Users 画面が表示されます。作成したユーザがリスト表示されている事が確認できます。
    Users
    画面下部に "This user does not belong to any groups"という警告が表示されています。新規作成したユーザはグループに属していないため、グループを設定します。 [ Add User to Groups ] ボタンをクリックします。
  6. Add User to Groups 画面が表示されます。作成したユーザを管理者グループに追加します。先に作成した Administrators をチェックし、[ Add to Groups ] ボタンをクリックします。
    Add User to Groups
  7. Group 画面に戻ります。ユーザがAdministratorsグループに追加されたのが確認できます。
    Users
  8. Create User 画面 ( ユーザ名入力時 ) の下部にも "..., create a password in the Users panel after completing this wizard." と記載があったのですが、パスワードの設定はユーザ作成後に行う必要があります。
    作成したユーザを右クリックし、表示されるコンテキストメニューから Manage Password をクリックします。
    Users
  9. Manage Password 画面が表示されるので、パスワードを設定します。
    パスワードを自動生成する場合、"Assign an auto-generated password" を選択して [ Apply ] ボタンをクリックします。
    自動生成ではなく自分でパスワードを設定する場合は "Assign a custom password" を選択して下さい。
    Manage Password
  10. パスワードが生成が成功すると、その旨画面表示が行われます。
    ここでは Security Credentials ( ファイル ) がダウンロード可能です。これも必要に応じてダウンロードして下さい。
    ダウンロードできる(CSV)ファイルには、Password、及び、Direct Signing Link ( IAM ユーザのログイン先URL ) 情報が含まれます。
    Manage Password

作成したIAMユーザでサインインする

作成したIAMユーザでサインインする場合には、ユーザのパスワード生成時に通知される Sign-In URLにアクセスします。
( IAM User Sign-In URL は IAMのダッシュボード画面 ( 左メニューの Dashboard をクリックして表示される ) の下部にも表示されています )

但し、このURLですが、https://nnnnnnnnnnnn.signin.aws.amazon.com/console (n は数値) 形式の判りにくいものになっています。
このURLにはAliasが設定可能となっているので、判りやすいAliasを設定してからにしましょう。

  1. IAMの Dashboard 画面にアクセスします。
  2. 画面下部に IAM User Sign-In URLが表示されているので、[ Create Account Alias ] ボタンをクリックします。
    IAM Sign-In URL
  3. Create Account Alias 画面が表示されるので、Account Alias に判りやすい Aliasを設定し、[ Yes, Create ] ボタンをクリックします。
    Create Account Alias
    これで、https://<設定したAlias>.signin.aws.amazon.com/console というURLからサインインが可能になります。
  4. このURLにWebブラウザからアクセスします。
    IAM Sign-In
    IAMユーザ作成時に指定したユーザ名、及び、設定したパスワード ( 自動生成した場合は生成されたパスワード ) を入力してサインインします。
  5. ログイン後はAWSコンソールに移動し、各種操作が問題なく行えるか確認しておきましょう。

経理担当者用のグループ、及び、ユーザを作成する

次に経理担当者用のグループ、及び、ユーザを作成してみます。
経理担当者用のユーザは請求情報が確認できるだけで、他の操作は行えないものとします。

実は、IAMユーザに請求情報 ( アカウント情報 ) の参照を許可させるには IAMでの設定を行う前にやっておかなければいけない事があります ( 経理担当者を例に取った理由もここにあります )。
参考 : Controlling User Access to Your AWS Account Billing Information - AWS Account Billing:

※以前はIAMユーザが請求情報を確認する事はできなかったらしい。

以下手順を示します。

  1. ( IAMアカウントではなく ) AWSアカウントでサインインします。
    フルアクセス権を有するIAMユーザでもこの操作は行えないため、AWSアカウントでサインインする必要があります。

    ※一度IAMユーザでサインインしている場合、IAMユーザのサインイン画面になってしまっている可能性があります。IAMユーザのサイン画面下部にAWSアカウント用のリンクがあるので、そちらからサインして下さい。

  2. アカウント管理に移動します。
    アカウント管理
  3. アカウント管理画面をスクロールすると、"AWSウェブサイトへのIAMユーザーアクセス" の設定箇所があります。ここで、"アカウントアクティビティページ", "仕様状況レポートページ" にチェックを入れ [ Activate Now ] ボタンをクリックします。
    AWS ウェブサイトへの IAM ユーザーアクセス
  4. Activate確認のダイアログが表示されるので、[ Ok ] ボタンをクリックします。
    Activate Confirmation
    これでIAMユーザが請求情報 ( アカウント情報 ) にアクセスできるようになりました。
  5. AWSマネジメントコンソールに移動し、IAMアイコンをクリックします。
  6. 管理者グループを作成した場合と同じように、Groups に移動し、[ Create New Group ] ボタンをクリックします。
  7. 経理担当用に適当なグループ名を設定し [ Continue ] ボタンをクリックします。
    Create New Group Wizard
  8. Set Permissions 設定に遷移するので、Custom Policy を選択し、[ Select ] ボタンをクリックします。
    Set Permissions
  9. アクセスポリシーの編集画面に遷移するので、Policy Name、及び、Policy Document を設定します。
    Set Permissions
    Policy Document の設定としては以下を設定します。
    {
      "Statement":[
         {
         "Effect":"Allow",
         "Action":"aws-portal:ViewBilling",
         "Resource":"*"
         },
         {
         "Effect":"Allow",
         "Action":"aws-portal:ViewUsage",
         "Resource":"*"
         }
      ]
    }
    

    設定が完了したら [ Continue ] ボタンをクリックします。
  10. レビュー画面に遷移するので問題なければ、[ Create group ] ボタンをクリックします。これで経理担当用のグループが作成されます。
  11. ユーザの作成と同様にして経理担当用のユーザを作成します。
    作成したユーザは上で作成した経理担当用のグループに追加し、パスワードも設定します。

確認

  1. 経理担当ユーザを作成したら、作成したIAMユーザでサインインする と同様にしてAWSにサインインします。
  2. このユーザで 請求書 (billing) 情報が参照できる事を確認します。
  3. また許可した操作(請求書情報の参照、及び、利用レポートの参照)以外が行えない事も確認しておきましょう。
    例えば、EC2の管理画面にアクセスした場合、以下のように権限が無い旨 ( You are not authorized to ... ) 表示されます。
    not authorized

パスワードポリシーの設定

IAMの利用を開始する場合にはパスワードポリシーの設定も行っておきましょう。
以下設定手順を示します。

  1. IAM の左メニューから Password Policy をクリックします。
    現在のパスワードポリシー設定が表示されます。デフォルトでは "ユーザにパスワードの変更を許可する ( Allow users to change their own password )" のみチェックされていて、パスワードの最少の長さは6で設定されています。パスワードの強度を確保するためには問題がある設定といえます。
    Password Policy
  2. ポリシー設定を変更します。運用上の問題がなければ、 ユーザにパスワードの変更を許可する ( Allow users to change their own password ) 以外のチェックボックスは全てチェックしておいた方がよいでしょう。ユーザにパスワードの変更を許可する ( Allow users to change their own password )、及び、パスワードの最少の長さ ( Minimum Password Length ) はセキュリティポリシーや運用方法に応じて適宜設定して下さい。 Password Policy
    設定を行ったら、[ Apply Password Policy ] ボタンをクリックします。
  3. ポリシー設定が適用されると、その旨画面下部に表示されます。
    Password Policy
    念のため、設定が適用されるかどうか、パスワード変更を行って確認する事をおすすめします。

まとめ

IAMを利用する事で、AWSに対するアクセス権の設定をかなり細かく設定できるようです。
( Group 生成の際の Set Permission 画面で "Policy Generator" を選択する事で対話形式で細かく設定可能です )。

自社内部で適切なアクセス権を設定するだけでなく、以下のような場合にも有用かと思います。

  • 開発を行う際に協力会社にアカウントを発行する
  • 一部オペレーションをエンドユーザに許可する

弊社の場合には、とりあえず請求情報を経理担当者が参照するというユースケースがあったのですが、上記設定+αの設定を行う事で要件を満足させる事ができました。