0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】IAMについて説明~作成までする

Posted at

はじめに

AWSで色々試すために、まずは基本的なIAMを触りました。
以下まとめましたが、わかりづらいところ、間違っているところあったらすみません。。

AWS IAMについて

AWS IAM(Identity Access Management)は、AWSのサービスやリソースへのアクセスを管理するサービスです。ほぼすべてのAWSサービスにおいて、アクセス権限の管理はIAMで行われます。

IAMを使用して以下が実施できます。

  • IAMユーザー/IAMロールを使用することで、AWSリソースへのアクセスが可能になります。
  • IAMユーザーはIAMグループでグルーピングが可能です。
  • IAMユーザー、IAMロール、IAMグループにIAMポリシーをアタッチすることで、アクセス制御をします。

IAMロールは、STS(Security Token Service)から一時的な認証情報を入手してAWSリソースにアクセスするため、情報流出のリスクが少なく利用を推奨されています。

IAMおよびSTSの利用料金は無料です。

ユーザーについて

AWSのリソースは、ルートユーザーまたはAWS IAMユーザーで操作します。

ルートユーザーとは、AWSに登録したときに作成される最初のユーザーのことです。Eメールアドレスでログインし、アカウントの契約の変更や解約等が行える、強い権限を持っています。
誤操作を防ぐため、原則ルートユーザーは使用せず、IAMユーザーを使うことがAWSでのベストプラクティスになります。

IAMユーザー

IAMユーザーは、AWSアカウント内で作成できるユーザーです。これを使用するとAWSの各種リソースを操作することができます。
しかし、IAMユーザーで操作できる内容は、IAMユーザーに紐づけられるIAMポリシーに依存します。

IAMポリシー

IAMポリシーとは、AWSリソースへのアクセスの権限を制御する機能です。IAMユーザーやIAMグループにIAMポリシーを紐づけ、どのサービスのどのリソースをだれが実行するか、等を細かく制御します。
IAMポリシーはJSON形式で記述します。以下に例を記載します。

AmazonEC2ReadOnlyAccess
{
    "Version": "2012-10-17", #IAMポリシーの書式のバージョン(固定値)
    "Statement": [ #実際に付与する権限と条件を記述。{}で囲まれたものはステートメントブロックという
        {
            "Sid": "WorkerNodePermissions", #IAMポリシー作成時に任意で決められる識別子
            "Effect": "Allow", #後述のActionに記述した内容の許可/拒否の決定
            "Action": [ #実際に制御したい操作を記述する
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVolumes",
                "ec2:DescribeVolumesModifications",
                "ec2:DescribeVpcs",
                "eks:DescribeCluster",
                "eks-auth:AssumeRoleForPodIdentity"
            ],
            "Resource": "*" #制御するリソースの対象をARN形式で指定する
            "Condition": { #制御を行う際の条件を記述できる、オプション機能
              "ec2;ResourceTag/Name": "Sample"
            }
        }
    ]
}
  • Version:IAMポリシーの書式のバージョンで、値は固定値です。
  • Statement:実際に付与する権限と条件を記述。{}で囲まれたものはステートメントブロックです。またステートメントブロックは、ステートメント内に複数記述ができます。
  • Statement Block:ステートメント内に{}で囲まれたものをステートブロックといいます。実勢に制御する権限と条件を記述します。
  • Sid:ユーザがIAMポリシー作成時に任意で決められる識別子です。IAMポリシーがこの値を使用することはありません。
  • Effect:Actionに記述した内容を許可(Allow)するか拒否(Deny)するか記述しています。
  • Action:実際に制御したい操作を記述します。複数のアクションを含めたり、ワイルドカード(*)を使用することができます。(例:ec2:\* )
  • Resource:制御するリソースの対象をARN形式で指定できます。またワイルドカード(*)を使用することができます。
  • Condition:オプションです。制御を行う際の条件を記述することができます。

IAMグループ

IAMグループは、IAMユーザーをグループ分けします。IAMユーザーは複数のIAMグループに所属でき、それぞれのIAMグループには複数のIAMポリシーをアタッチできます。
そして、IAMグループにアタッチされたIAMポリシーと、IAMユーザーにアタッチされたIAMポリシー両方の権限が付与されます。

なお、IAMユーザーに複数のIAMポリシーをアタッチするのは管理が煩雑となるため、IAMポリシーをアタッチさせたIAMグループにIAMユーザーを所属させることで権限管理をすることが推奨されています。

IAMロール

IAMロールは、AWSリソースに紐づけられる役割です。ちなみに、IAMロールにもIAMポリシーをアタッチすることが出来ます。IAMロールは、各リソースに対して1つ割り当てられます。

AWSリソースはIAMロールを使用することが一般的です。

STS(AWS Srcurity Token Service)

STS(AWS Srcurity Token Service)は、AWSリソースや、IAMユーザーを持っていないユーザーやアプリケーションに対して、一時的に利用できるにんしょうけんげん(IAMロールの一時的なアクセスキー)を付与する機能です。この一時的な認証情報を請求する操作を「AssumeRole」(ロールの引継ぎ)と呼びます。

STSを使用することでIAMユーザーを作る必要がなくなり、IAMユーザーごとに作成されるアクセスキーの管理が不要になります。

STSの代表的な使用例として、異なるAWSアカウントによるAWSリソースの操作(クロスアカウントアクセス)があります。
A社のAWSアカウントがB社のAWSアカウントに存在するAWSサービスにアクセス・操作したい場合、B社にて事前にAssumeRoleを対象のアカウント、ロールに許可するよう設定を行います。そうすることで、以下の流れでA社はB社のAWSサービスを利用することができます。

  1. A社からB社にAssumeRoleを要求
  2. B社のSTSが一時認証情報をA社に送付
  3. A社が一時認証情報を使用して、B社の対象のIAMロールとしてアクセス

AWSリソースへのアクセス

以下のような流れでAWS各種リソースへアクセスします。

  1. AWSリソースへアクセスするプリンシパル(ユーザーやアプリケーション)が、IAMユーザーやIAMロールを使用して認証を行う。
  2. 前項の認証後、IAMユーザーまたはIAMロールを使用して、AWSリソースにリクエストを送る。
  3. IAMユーザーやIAMロールにアタッチされたIAMポリシーに基づき、リソースの捜査権限の有無を評価する。ここで権限がない場合には、リソースの操作に失敗する。

IAMユーザーの作成(手順)

AWSを利用するにあたり、IAMユーザーが推奨されているので作成します!!!
IAMユーザーはまだひとつも作成していないため、まずはIAMユーザーの王様、フルコン権限を持つAdministratorユーザーを作成します。
・・の前に、IAMユーザー作成時にIAMグループをアタッチする箇所があるので、先にIAMグループを作成してしまいます。

  1. ルートユーザーでログイン
  2. Administrator用のIAMグループの作成
  3. Administrator権限を持つIAMユーザーの作成
  4. IAMユーザーでログインする

ルートユーザーでログイン

  1. AWSマネジメントコンソールにログインします。
    https://aws.amazon.com/jp/console/
  2. ルートユーザーでログインします。
  3. AWSマネジメントコンソール画面からIAMを検索し、選択します。
    image.png

Administrator用のIAMグループの作成

  1. IAM画面にて「ユーザーグループ」を選択し、グループを作成を押下します。
    image.png

  2. 以下の設定を実施し、ユーザーグループを追加を押下します。

    • ユーザーグループ名:任意のグループ名(今回はAdmin-group
    • ユーザーをグループに追加:必要なユーザーを追加(今回はまだユーザーを作成していないので空白)
    • 許可ポリシーを添付:適切なポリシーをチェックする(今回はAdministratorAccessを付与)
      image.png
      image.png
  3. 対象のグループが作成されたことを確認する。
    image.png

Administrator権限を持つIAMユーザーの作成

  1. IAM画面にて「ユーザー」を選択し、ユーザーの作成を押下します。
    image.png

  2. 以下の設定を実施し、次へを押下します。

    • ユーザー名:任意のユーザー名(今回はAdministrator
    • AWSマネジメントコンソールへのユーザーアクセスを提供する:チェックをつける
    • ユーザータイプ:IAMユーザーを作成
    • コンソールパスワード:カスタムパスワード
    • ユーザーは次回のサインイン時に新しいパスワードを作成する必要があります(推奨):チェックをつける
      image.png
      image.png
  3. 以下の設定を実施し、次へを押下します。

    • 許可のオプション:ユーザーをグループに追加を選択
    • ユーザーグループ:任意のグループにチェックをつける(今回はAdmin-group
      image.png
  4. 以下の設定を確認し、ユーザーの作成を押下します。
    image.png

  5. パスワードを取得画面にて、コンソールサインインの詳細情報を取得します。
    .csvファイルをダウンロードを押下すれば、ログイン情報が記載されているファイルをダウンロードできます。
    image.png
    image.png

IAMユーザーでログインする

  1. AWSマネジメントコンソールにログインします。
    https://aws.amazon.com/jp/console/

  2. 以下のログイン情報を記入し、Sign inを押下します。

    • Account ID:先ほど取得したコンソールサインインURLに含まれている12桁の数字を記入します。不明な場合は、再度ルートユーザーにログインしてアカウントIDを確認します。
    • IAM Username:先ほど作成したIAMのユーザー名を記入
    • Password:先ほど作成(取得)したパスワードを記入
      image.png
  3. パスワード変更画面に遷移するので、新しいパスワードを作成します。

  4. コンソール画面が表示されれば、ログインに成功です。
    image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?