【未経験向け】CCNA(200-301)とは? NW未経験が1ヶ月で合格した際に使用した魔法の学習教材、サイトを紹介!!!

AWSアカウント発行時にIAM周りの設定を一式設定するCloudFormationテンプレート

AWS

AWSアカウント発行時にまずやるべきことはIAM周りの設定になると思います。
特にAWSアカウントを複数所持している場合、アカウント毎にIAMユーザ/ロール作ったりするのは面倒くさいですよね。

そんな貴方にオススメしたいのがCloudFormation化です。
CFnテンプレート化することで、面倒な手作業を一切無くし、コード管理することができます。

また、コード化することにより、そのテンプレートがパラメータシート代わりにもなるので、管理コストも軽減できます。

本記事では、個人利用者向けの一般的なIAM設定を行うCFnテンプレートを公開します。

スポンサーリンク

記事の概要

目的

  • AWSアカウント発行時のIAM周りの設定を行うCFnテンプレートを作成する
    • 作成リソース
      • IAMグループ
      • IAMユーザ

前提条件

  • IaC化にあたり、CloudFormationテンプレートを利用する
  • ターゲットはAWSの個人利用者向けとする
  • パラメータ等は環境に応じて適時変更すること
  • 本記事を記載するにあたって、基礎的なAWSの知識・知見は持ち合わせているものとする

CloudFormationテンプレート

IAM設計

  • 設計方針
    • 利用用途に応じた権限を持つIAMグループ/ユーザを作成する
    • AWSアカウント発行時のIAMの初回セットアップを想定した構成とする

CFnテンプレート

AWSTemplateFormatVersion: "2010-09-09"
Description: "Create a CFn Template IAM Settings By chibiharu"

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Metadate
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Parameters:
          - AdminUserGroupName
          - PowerUserGroupName
          - ReadOnlyUserGroupName
          - AdminUserName
          - PowerUserName
          - ReadOnlyUserName
          - InitPasswd


# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Input Parameters
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Parameters:
### IAM Group ###
  AdminUserGroupName:
    Type: String
    Default: CFn-Sample-AdminUserGroup
    Description: IAM-Group To AdminUserGroup
  PowerUserGroupName:
    Type: String
    Default: CFn-Sample-PowerUserGroup
    Description: IAM-Group To PowerUserGroup
  ReadOnlyUserGroupName:
    Type: String
    Default: CFn-Sample-ReadOnlyUserGroup
    Description: IAM-Group To ReadOnlyUserGroup
### IAM User ###
  AdminUserName:
    Type: String
    Default: CFn-Sample-AdminUser
    Description: IAM-User To AdminUser
  PowerUserName:
    Type: String
    Default: CFn-Sample-PowerUser
    Description: IAM-User To PowerUser
  ReadOnlyUserName:
    Type: String
    Default: CFn-Sample-ReadOnlyUser
    Description: IAM-User To ReadOnlyUser
### Other ###
  InitPasswd:
    Type: String
    Description: Init Password
    NoEcho: True
  ## パスワードは、最低でも次の要件を満たす必要があります
  # ・1つ以上の「大文字アルファベット (A–Z)」「小文字アルファベット (a–z)」「数字」「記号」

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Resources
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Resources: 
  # ------------------------------------------------------------
  # IAM Group
  # ------------------------------------------------------------
  AdminUserGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: !Ref AdminUserGroupName
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AdministratorAccess
  PowerUserGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: !Ref PowerUserGroupName
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/PowerUserAccess
  ReadOnlyUserGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: !Ref ReadOnlyUserGroupName
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/ReadOnlyAccess

  # ------------------------------------------------------------
  # IAM User
  # ------------------------------------------------------------
  AdminUser:
    Type: AWS::IAM::User
    Properties:
      UserName: !Ref AdminUserName
      Groups:
        - !Ref AdminUserGroupName
      LoginProfile:
        Password: !Ref InitPasswd
        PasswordResetRequired: true
  PowerUser:
    Type: AWS::IAM::User
    Properties:
      UserName: !Ref PowerUserName
      Groups:
        - !Ref PowerUserGroupName
      LoginProfile:
        Password: !Ref InitPasswd
        PasswordResetRequired: true
  ReadOnlyUser:
    Type: AWS::IAM::User
    Properties:
      UserName: !Ref ReadOnlyUserName
      Groups:
        - !Ref ReadOnlyUserGroupName
      LoginProfile:
        Password: !Ref InitPasswd
        PasswordResetRequired: true


# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Output Parameter
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Outputs:
  AdominUserOutput:
    Description: IAM-User To AdminUser
    Value: !Ref AdminUserName
  PowerUserGroupOutput:
    Description: IAM-User To PowerUser
    Value: !Ref PowerUserName
  ReadOnlyUserOutput:
    Description: IAM-User To ReadOnlyUser
    Value: !Ref ReadOnlyUserName
  LoginURL:
    Description: AWSLoginURL
    Value: !Join ["", ["https://", !Ref AWS::AccountId, ".signin.aws.amazon.com/console"]]

参考記事

コメント

タイトルとURLをコピーしました