KCS Carrot logoKCS キャロットBlog

AWS 勉強会 – 準備編

書いた人: @Naoya-Kishinami

はじめに

こんにちは、システム開発第一グループの kishinami です。

ここ数年は AWS を使用したプロジェクトでお世話になっています。

クラウドサービスとしては AWS がトップのシェア率となっていますが、AWS の知識はあっても実際には触ったことがない社員が居た為、興味がある社員向けに勉強会を開催しました。

以上を踏まえて、その勉強会を開催するにあたっての準備・確認作業を、記事にまとめてみたいと思います。

目的

ユーザーを作成後、そのユーザーへ Administrator ロールを付与するなどすれば、AWS 内の各サービスやリソースの作成・編集が可能です。

ただ、実際の開発の際は、必要な時に編集可能なロールへ切り替えて操作することが多いと思うので、勉強会でも同様にロールの切替の機構を構築して進めていきたいと思いました。

実現したいことを図にすると、以下のような内容になります。

実現想定図

機構を構築できたら、テストユーザーを作成して、動作検証を行ってみます!

構築手順

AWS マネージコンソール上での構築手順となります。

①ロールの作成

まずは、編集可能なロール( AdminRole )を作成します。

  1. IAM コンソールの左側ペインから ロール をクリック、更に右上の ロールを作成 をクリック
  2. 表示された 信頼されたエンティティを選択 画面で以下を選択して 次へ をクリック
    • 信頼されたエンティティタイプ:AWS アカウント
    • AWS アカウント:このアカウント(xxxxxxxxxxxx)
  3. 許可を追加 画面で以下を選択して 次へ をクリック
    • 許可ポリシー:AdministratorAccess
  4. 名前、確認、および作成 画面で以下を選択して ロールを作成 をクリック
    • ロールの詳細
      • ロール名:AdminRole
      • 説明:適宜入力

なお、作成されたロールの信頼ポリシーは以下の内容となっています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxxxx:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

補足

本来であれば、触れるサービスの絞り込みを行うべきかもしれませんが、面倒なので 色々なサービスに触れてほしいので、 AdministratorAccess を付与しています。

②ポリシーの作成

続いて、先ほど作成したロール( AdminRole )への切替( AssumeRole )を許可するポリシー( PromoteAdminRolePolicy )を作成します。

  1. IAM コンソールの左側ペインから ポリシー をクリック、右上の ポリシーの作成 をクリック
  2. 表示された アクセス許可を指定 画面で以下を選択して 次へ をクリック
    • サービスを選択:STS
      • アクション許可:AssumeRole
      • リソース:作成したロール( AdminRole )の ARN
  3. 確認して作成 画面で以下を選択して ポリシーの作成 をクリック
    • ポリシーの詳細
      • ポリシー名:PromoteAdminRolePolicy
      • 説明:適宜入力

③ユーザーグループの作成

最後に、デフォルトで許可するロールと、作成したロール( AdminRole )への切替を許可する2つのユーザーグループを作成します。

デフォルトで許可するロールのユーザーグループ

  1. IAM コンソールの左側ペインから ユーザーグループ をクリック、右上の グループを作成 をクリック
  2. 表示された ユーザーグループを作成 画面で以下を選択して ユーザーグループを作成 をクリック
    • グループに名前を付ける
      • ユーザーグループ名:適宜
    • 許可ポリシーを添付:IAMUserChangePassword、ReadOnlyAccess

作成したロール( AdminRole )への切替を許可するユーザーグループ

  1. IAM コンソールの左側ペインから ユーザーグループ をクリック、右上の グループを作成 をクリック
  2. 表示された ユーザーグループを作成 画面で以下を選択して ユーザーグループを作成 をクリック
    • グループに名前を付ける
      • ユーザーグループ名:適宜
    • 許可ポリシーを添付:作成したポリシーを付与

以上で構築が完了しました。

動作検証

テストユーザーを作成して、マネージコンソール上とローカルで動作検証を行ってみます。

テストユーザーの作成

まずは、動作検証用のテストユーザーを作成します。

  1. IAM コンソールの左側ペインから ユーザー をクリック、右上の ユーザーの作成 をクリック
  2. 表示された ユーザーの詳細を指定 画面で以下を選択して 次へ をクリック
    • ユーザーの詳細
      • ユーザー名:test-user
      • AWS マネジメントコンソールへのユーザーアクセスを提供する:チェック
        • ユーザータイプ:IAM ユーザーを作成します
      • コンソールパスワード:自動生成されたパスワード
  3. 許可を設定 画面で以下を選択して 次へ をクリック
    • 許可のオプション:ユーザーをグループに追加
    • ユーザーグループ:先ほど作成した2つのユーザーグループを付与
  4. 確認して作成 画面で内容を確認して ユーザーの作成 をクリック

AWS マネージコンソールで検証

作成したテストユーザーに ReadOnly 権限が付与されていることを確認してみます。

  1. 作成したテストユーザーでログイン。
  2. S3 コンソールの左側ペインから バケット をクリック、既存バケット群が表示されることを確認
  3. 適当な既存バケットへ以下の操作でファイルをアップロードして失敗することを確認
    1. 右上の アップロード をクリック
    2. ファイルとフォルダ で適当なローカルファイルを選択して、アップロード をクリック
    3. エラー(アクセス拒否)が発生してアップロードされない

続いて、Administrator 権限へ切り替えて確認してみます。

  1. 右上のアカウント(test-user@xxxx-xxxx-xxxx)をクリック、ロールの切り替え をクリック
  2. ロールの切り替え ダイアログで以下を入力して、 ロールの切り替え をクリック
    • アカウント ID:xxxxxxxxxxx
    • IAM ロール名:作成したロール( AdminRole )名
    • 表示名:適宜
    • 表示色:適宜
  3. 切り替え後、既存バケットへのファイルのアップロードを再度実行すると成功!

ローカル(CLI)で検証

最後に、ローカル(CLI)を使用して確認してみます。

アクセスキーの準備

最初に、以下の手順でアクセスキーを作成・取得します。

  1. 作成したテストユーザーでログイン。
  2. IAM コンソールの左側ペインから ユーザー をクリック、一覧から test-user をクリック
  3. アクセスキーを作成 をクリック
  4. 表示された画面で コマンドラインインターフェイス (CLI) を選択して、アクセスキーを作成
  5. 作成されたアクセスキー(シークレットアクセスキー)を控えておきます

設定/認証ファイルの作成

自身のルートフォルダ配下に .aws フォルダを生成した上で、以下のファイルを配置します。

credentials (認証ファイル)

[default]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットアクセスキー

config (設定ファイル)

[default]
region = ap-northeast-1
output = json

[profile AdminRole]
region = ap-northeast-1
role_arn = 作成したロール( `AdminRole` )の ARN
output = json
source_profile = default

動作検証

マネージコンソール同様、まずは ReadOnly 権限の確認を行います。

  1. aws s3 ls を実行すると、既存バケットの一覧が表示されることを確認
  2. aws s3 rm s3://xxx(先に上げたファイルのパス) でマネージコンソールでアップロードしたファイルを削除を実行すると、エラー(アクセス拒否)が発生して削除が失敗

続いて、Administrator 権限へ切り替えて確認してみます。

  1. export AWS_PROFILE=AdminRole を実行
  2. 再度 aws s3 rm s3://xxx(先に上げたファイルのパス) を実行すると成功!

最後に

以上でロールの切替の機構が構築出来ました 👏

勉強会向けに始めた準備作業ですが、個人的にも理解の整理が行えて良かったです!

因みに、本来であれば、編集権限への切り替えを許可する機構も必要とは思います。

(もっと言えば、 IAM IdC でユーザー管理するのが今風なのかも?)

参考サイト

構築にあたって参考にしたサイトです、感謝 🙇‍♂️

  • https://dev.classmethod.jp/articles/iam-role-passrole-assumerole/
  • https://blog.serverworks.co.jp/assume-role-divedeep