サイトアイコン 協栄情報ブログ

CloudFormationによる【IAM】の構築


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆様こんにちは。
今回はCloudFormatonを利用して高可用性アーキテクトの構築をしていきます。
この記事ではIAMポリシー、IAMロールの作成、IAMポリシーをIAMロールに追加できているかマネージメントコンソールで確認します。

1.高可用性アーキテクト構築目次

目次はこちら

2.IAMサービス概要

2-1.IAMとは

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのウェブサービスです。IAM により、誰を認証 (サインイン) し、誰にリソースの使用を承認する (アクセス権限を持たせる) かを制御します。
参照:IAMサービス概要

2-2.アカウント登録

  1. AWSを利用するには最初にAWSアカウントを作成する必要があり、アカウント作成時に指定したメールアドレスとパスワードを使用することで、AWSマネジメントコンソールにログインできます。

2-3.MFA(多要素認証)

ソフトウェア ハードウェア ハードウェア
製品 Google Authenticator,
Authy 2-Factor Authentication
Yubikeyセキュリティー Gemalto
形式 スマホアプリ USBスティック型 トークン型
コスト 無料 有料(4,500円程度) 有料(2,000円程度)
機能 単一のデバイスで複数のトークンをサポート 単一のセキュリティキーで複数のルートユーザー/IAMユーザーをサポート 不正開封防止用キーホルダー型デバイスで内蔵電池により単体でOTPを発行

2-4.ルートユーザー

2-5.IAMユーザー

  • ルートユーザーはAWSの全ての操作が可能なため、管理者アクセスが必要な担当者ごとに新しいIAMユーザー、IAMグループを作成します。
  • AdministratorAccess管理ポリシーをアタッチした「管理者」ユーザーグループにそのユーザーを配置することで、そのユーザーを管理者にします。
  • その後、管理者ユーザーグループのユーザーは AWS アカウントのユーザーグループ、ユーザーなどを設定する必要があります。その後の操作はすべて、ルートユーザーではなくAWS アカウントのユーザーとそのキーを通じて行う必要があります。ただし、一部のアカウントおよびサービス管理タスクでは、ルートユーザー認証情報を使用してログインする必要があります。
    参照:最初の IAM 管理者のユーザーおよびユーザーグループの作成

2-6.IAMポリシー

2-7.類似AWSリソース

3.構築したいIAM構成図

  1. まず IAMポリシーにカスタム管理ポリシーで”CloudWatchAlarm”、”S3”のポリシー宣言をします。
  2. CloudWwatchAlarmにカスタムメトリクスをプッシュする権限をもったポリシー設定
  3. インスタンスがS3の読み書きをできる権限をもったポリシー宣言をします。

4.全体構築ソースコード

#IAMPolicy
Resources:
  ManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: hebiishi-IAM-CF
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action:
              - "cloudwatch:PutMetricData"
              - "ec2:DescribeTags"
            Resource: "*"
          - Effect: Allow
            Action:
              - "s3:ListBucket"
            Resource: "arn:aws:s3:::hebiishi-wordpress-s3"
          - Effect: Allow
            Action:
              - "s3:PutObject"
              - "s3:GetObject"
              - "s3:DeleteObject"
            Resource: "arn:aws:s3:::hebiishi-wordpress-s3/*"
  Role:
    Version: "2012-10-17"
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::xxx:policy/hebiishi-IAM-CF
  InstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: /
      Roles:
        - !Ref Role

Outputs:
  InstanceProfileOutput:
    Value: !Ref InstanceProfile
    Export:
      Name: InstanceProfile

5.IAM構築手順

下記のIAMポリシーを作成します。

5-1.IAMポリシーの作成

CloudWatchAlarm

使用オプション 設定値 説明
ManagedPolicyName hebiishi-IAM-CF IAMポリシー名
Action ①cloudwatch:PutMetricData,
②ec2:DescribeTags
①インスタンスがカスタムメトリクスを発行できる権限付与
②カスタムメトリクス発行時に必要なインスタンス情報をインスタンス自身が取得できる権限を与えています。
Resource "*" EffectとActionの対象となるリソース 

S3

使用オプション 設定値 説明
Action ①s3:ListBucket
②s3:PutObject
③s3:GetObject
④s3:DeleteObject 
①リソースで指定したS3の情報を取得できる権限付与
②インスタンスがS3に対し画像をアップロードできる権限付与
③インスタンスがS3に対し画像を取得できる権限付与
④インスタンスがS3の画像を削除できる権限
Resource arn:aws:s3:::hebiishi-wordpress-s3 特定のS3を指定
ManagedPolicyArns 1.arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
2.arn:aws:iam::aws:policy/AmazonS3FullAccess
1.CloudWatch 収集(ログ&カスタムメトリクス)
2.S3に対しWordPress画像のアップロード
#IAMPolicy
Resources:
  ManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: hebiishi-IAM-CF
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action:
              - "cloudwatch:PutMetricData"
              - "ec2:DescribeTags"
            Resource: "*"
          - Effect: Allow
            Action:
              - "s3:ListBucket"
            Resource: "arn:aws:s3:::hebiishi-wordpress-s3"
          - Effect: Allow
            Action:
              - "s3:PutObject"
              - "s3:GetObject"
              - "s3:DeleteObject"
            Resource: "arn:aws:s3:::hebiishi-wordpress-s3/*"

5-2.IAMロールの作成

下記はIAMロールの設定項目です。

使用オプション 設定値 説明
Action sts:AssumeRole ロールに対し付与するアクション
ManagedPolicyArns arn:aws:iam::xxx:policy/hebiishi-IAM-CF アタッチしたいポリシーのARNを入力
  Role:
    Version: "2012-10-17"
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::xxx:policy/hebiishi-IAM-CF

5-3.確認

IAMポリシー確認内容

IAMロール確認内容

6.感想

最初はIAMポリシー、IAMロールの公式ドキュメントを参照しても記述内容に問題がある事に気づくのに時間が掛かっていて困りましたが、構築したい内容の作成できて良かったです。今後作成する際に、今回作成した方法を参考に知識、技術をい深めていきたいと思います。

7.参照

参照:IAMサービス概要

参照:AWS CloudFormation テンプレート

モバイルバージョンを終了