Help us understand the problem. What is going on with this article?

【AWS】IAMまとめ

More than 3 years have passed since last update.

どうも、iron千葉です。
IAMについて、ユーザガイドを見てポイントをまとめました。
ポイントだけ確認したい人、ざっと全体を見たい人におすすめです。

IAMとは?

  • AWS上のサービスを操作するユーザとユーザのアクセス権限を管理する
  • ユーザがアクセスるための認証情報、ユーザがアクセスるAWSリーソースを制御するための権限を集中管理
  • もしIAMがなかったら、フルアクセスのAWSアカウントをみんなで共有することになる
  • IAMは、追加料金なしで利用できる

IAMにできること

  • APIアクセスで利用するアクセスキーの発行、ローテーション、無効にするか制御できる
  • 各ユーザが操作できるAWSリソースのアクセス制御
  • AWSリソースの共有(アカウントを超えた共有)
  • 開発者、管理者、本番環境、開発環境などでのグループレベルでのアクセス権限の制御
  • SSLを使って組織内ネットワークからのみ、AWSリソースにアクセスできる

IAMへの移行

  • 単一のアカウントを持っている→そのまま移行できる
  • 組織別にアカウントを持っているがAWSリソースを共有することはない→アカウントをまとめて一括請求できる
  • 組織別にアカウントを持っていて、AWSリソースを共有したい→リソースの再作成が必要

AWSマネジメントコンソールへのログイン

  • メールアドレスとパスワードを利用したログインはフルアクセス権限
  • そのため、IAMユーザを作成し、IAMユーザにてログインすることを推奨
  • MFAを利用することにより、セキュリティレベルを向上できる

一括請求

  • 複数のアカウントをまとめて、1つのアカウントで請求可能(コンソリデートビリング)

IAMの要素

  • AWSアカウント:AWS利用する上で最初に取得するフルアクセスを持ったアカウント(メールアドレス、パスワードでマネジメントコンソールにログインできる)
  • ロール:一時的にアクセスを制限したアカウントを発行できる(権限委任)
  • リソース:S3のバケット、オブジェクト、EC2インスタンス等AWS上のリソース。ARNでリソースを特定できる
  • アクセス権限:ユーザベース(例:bobは、S3とEC2への操作権限がある)とリソースベース(例:S3はbobとbobyのアクセスを許可する)がある

IAMを使う

  • グループ作成
  • ユーザ作成
  • APIでのアクセス用にアクセスキーを発行
  • マネジメントコンソールログイン用のパスワード発行

IAMの利用方法

  • AWS上でIAMアカウントを管理→適宜IAMユーザを作成し、アクセス権限を設定してユーザに渡す
  • 既存の認証システムと連携する→IDフェデレーションによる、外部ユーザに対し一時的に利用なユーザを発行する
  • AWSアカウント間でのクロスアカウントアクセス

IAMのユーザとグループ

  • 同じようなユーザをグループでまとめられる(UNIXでいうグループ、ユーザのようなイメージ)
  • 一人のユーザが複数のグループに所属できる
  • グループ中にグループは作成できない

IAMユーザでAWSマネジメントコンソールにログインする

MFA

  • マネジメントコンソールログイン時に、メールアドレス、パスワードの他に3つ目の認証に必要な情報を入力
  • スマフォアプリまたはMFA専用デバイスに表示された数字を、ログイン情報として入力する

認証情報の種類

  • パスワード(マネジメントコンソールログイン時に利用、記号・数字等の文字の指定、期間での変更要求を設定できる)
  • アクセスキー(API、AWS CLI時に利用)
  • 証明書
  • MFA(マネジメントコンソールの追加ログイン情報として利用)

パスワードの管理

  • パスワード変更
  • パスワードポリシーの設定
    • パスワードの最少の長さ
    • 大文字、小文字、数値、アルファベット、記号の特定の文字を含むように指定
    • IAMユーザが自分で自分のパスワードを変更できるように指定
    • 指定した期間経過後にパスワードを自分で変更するように要求するように設定
    • 指定した期間経過後に管理者がパスワードリセットしないと利用できないように指定
    • 以前利用したパスワードを、再利用できないように設定
    • パスワードポリシーは、次回変更時から適用
    • ただし、既存パスワード変更期間を指定した場合はすぐに適用される

アクセスキーの管理

  • AWS CLI、SDK等でAWS操作できるキーを発行
    • アクセスキーID *シークレットアクセスキー
  • シークレットアクセスキーは、キー作成時のみダウンロードできる(なくした場合は、再発行)
  • キーは1IAMユーザあたり、1つ持てる
  • 状態はアクティブ、インアクティブを指定できる(利用しない場合は、削除するかインアクティブにする)

MFAの管理

  • Time-Based One-Time Password(TOTP)に準拠
  • スマフォアプリを仮想MFAデバイスとして利用できる:登録時はQRコードで
  • ハードウェアの専用MFAデイバスも利用可能(売ってるので買えば使える):登録時はデバイスのシリアルコードで
  • アカウントごとに1つのMFAデバイスを利用できる
  • MFAデバイスとして同期対象からずれた場合(利用頻度が低く、デバイスの時間がずれる等で)
    • 再同期には10分程度かかる
    • 再同期ができない場合は、電話…
  • MFAを利用しなくなった場合は、MFAを無効化する
  • MFAデバイスが故障または無くした場合…
    • MFAデバイスを無効化する
    • ルートアカウントの場合は、Contact USよりAmazonに連絡。一時的にMFAが解除される
    • IAMアカウントの場合は、ルートアカウントでログインして操作する
  • 保護API実行を、MFA承認を強制できる(ポリシーで設定)

ユーザ署名証明書の管理

  • API呼び出しで、SOAPを利用できたが、廃止が決まってるのでアクセスキーを利用する

認証情報の更新

  • アプリを中断させずにアクセスキーを変更する
    • 新しいキーを作成(アクティブなキーが2つになる)
    • アプリケーションで新しいキーを利用するように修正
    • 古いキーをインアクティブにする
    • 切り戻しは、古いキーをアクティブにするだけ

認証情報レポートの取得

  • ユーザごとの、パスワード、アクセスキー、MFA デバイス、署名証明書などの状況(アクティブとかパスワード変更日とか)をCSVでダウンロードできる

IDプロバイダを利用する

  • 外部のユーザ(googleとかFacebookとかADとかldapとか)に対して、AWS上のリソースに対するアクセス許可ができる(SSO)
  • IDプロバイダとして、SAMLまたはOpenID Connect(OIDC)を利用できる
  • SAMLプロバイダの利用方法(AD等)
    • IDプロバイダからSAMLメタデータ(発行者名・キー等の情報)を取得
    • SAMLメタデータを元に、マネジメントコンソール・またはAPIでSAMLプロバイダを作成(IDプロバイダとの信頼する)
    • SAMLプロバイダを指定して、ロールの作成
    • EC2インスタンス作成時に指定
  • OIDCプロバイダの利用方法(google、Facebook等)
    • アプリケーションをIDプロバイダ(googleやFacebook)に登録して、クライアントIDをもらう
    • クライアントID、IDプロバイダURLを元にOIDCプロバイダを作成
    • OIDCプロバイダの証明書を取得し、登録する
    • OIDCプロバイダを指定して、ロールの作成
    • EC2インスタンス作成時に指定

IAMロール(委任とフェデレーション)

  • IAMロールでできること
    • AWS以外のID(facebookやgoogle、独自のldap、AD等)とのID連携
    • EC2インスタンス(上で動作するアプリ)に権限を委任(一時アクセス用の期限付きユーザを発行)
  • ロールとは
    • IAMユーザ、グループとは全く別のもの(ユーザとかにアタッチするものではない)
    • ロールを作成してアクセス権(ポリシー)を設定できる
    • ロールに自分または他のAWSアカウントを指定し、アクセス権限を委任できるができる
    • ロールにIAMアカウントを指定し、アクセス権限を委任できる
    • ロールにIDプロバイダ指定し、アクセス制御ができる(IDフェデレーション)
  • ロールの使い方
    • マネジメントコンソールでの操作の場合:IAMでログインし、ロールの切り替えを実施。アクセス権を切り替えられる
    • API(アプリ)での操作の場合:AWS STS AssumeRoleにて一時ユーザを発行してもらい、そのユーザを利用
    • EC2インスタンスでの利用の場合:EC2インスタンスにロールを割り当て、EC2メタデータより一時ユーザを取得し利用

サーバ証明書の管理

  • IAMでELBやその他アプリで使うサーバ証明書(X.509)を管理できる
  • アップロード、削除、更新、一覧表示ができる
  • ELBでHTTPSを利用する場合は、IAMにアップロードした証明書を選択する

アクセスポリシー

  • IAMでのユーザ、グループ、ロールにアクセス権限を設定するには、JSON形式のIAMポリシーを記載しポリシーを作成する
  • 作成したポリシーは、ユーザ、グループ、ロールにアタッチして利用する
  • 記載形式はユーザガイド参照

AWS Security Token Service(STSとは)

  • 信頼されたユーザに一時的なアクセス権限を付与できる
    • 具体的には、一時的なアクセスID、アクセスキー、認証トークンを発行し、期限付きで利用できる

STSの利用ケース

  • オンプレID(SAML,LDAP)との認証連携
  • Web ID(Amazon,Google,Facebook等)との認証連携
  • クロスアカウントアクセス(他のAWSアカウントからアクセスできるようにする)
  • EC2ロール(ロールを与えたEC2上に一時IDを発行する)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした