以下メモ

AWS Identity and Access Management (IAM)

AWS Identity and Access Management (IAM) は、AWSの操作をよりセキュアに行うための認証・認可の仕組み。

IAMを使用すると、AWSのユーザーとグループを作成および管理し、アクセス権を使用してAWSリソースへのアクセスを許可および拒否することができる。これらの機能は、AWSに登録しているなら無料で扱える。

特徴

  • AWSアカウントへの共有アクセスができる
  • 詳細なアクセス権限を設定できる
  • 多要素認証に対応
  • 多くのAWSサービスと統合している

ユースケース

  • AWSリソースへのきめ細やかなアクセス制御を行いたい
  • ユーザーへの多要素認証を行いたい
  • Amazon EC2で動作するアプリケーションからAWSリソースに安全にアクセスしたい
  • モバイルアプリなどからAWSリソースに安全にアクセスしたい
  • MS ADなどと連携して社内ディレクトリとの統合を行いたい

機能

機能 内容
Users 個々のユーザーを作成する
Groups グループを使って権限を管理する
Permissions 最小限の権限を付与する
Auditing AWS CloudTrail をオンにする
Password 強力なパスワードポリシーを構成する
MFA 特権ユーザーに対して、MFA を有効化する
Roles Amazon EC2 インスタンスに対して IAM ロールを使用する
Sharing IAM ロールを使って、アクセスを共有する
Rotate セキュリティ認証情報を定期的にローテーションする
Condition 条件を使って、特権的アクセスをさらに制限する
Root ルートの使用を削減または削除する

IAMユーザー

AWSを操作するためのユーザー。1AWSアカウントで5000ユーザーまで作成可能。 ユーザーごとに、以下の情報を設定できる。

  • ユーザー名
  • パス (オプション)
    • 組織階層やプロジェクトなどをセット (/aws/sa/ など)
  • 所属グループ
    • 10のグループまで設定可能
  • パーミッション
    • AWSサービスへのアクセス制限

IAMグループ

IAMユーザーをまとめるグループ。1AWSアカウントで100グループまで作成可能。 グループごとに、以下の情報を設定できる。

  • グループ名
  • パス (オプション)
    • 組織階層やプロジェクトなどをセット (/aws/ など)
  • パーミッション
    • IAMユーザーに付与したパーミッションと同様に評価される

認証機能

通信の相手が誰であるかを確認すること。

MFA (多要素認証)

ハードウェアトークンやスマートフォンアプリを利用することで、2要素認証が可能。ユーーザのセキュリティを向上させる。

認可機能

とある特定の条件に対して、リソースアクセスの権限を与えること。

IAMポリシー

AWSサービスへのアクセスに対する権限設定を設定し、グループやユーザーに対して適用できる仕組み。JSON形式で記述できる。

しかし、IAMポリシーを適時人に割り当てる方式はいずれ破綻するため、推奨されていない。人に権限を割り当てる時には、 IAMロールIAMグループ の使用が推奨されている。

IAMロール

AWSサービスやアプリケーション等、エンティティに対してAWS操作権限を付与するための仕組み。例えば、実行するアプリケーションにロールを付与することで、そのアプリケーションからAWSを操作できるようになる。EC2ほか、Beanstack、Data Pipelineなどでも利用可能。

IAMユーザーやグループには紐付かないため、一時的に権限を付与するために利用される。実態は一定時間だけ存在するAWSサービスへの認証情報であり、時間などで消滅する。

例えば、AWS EC2からAWSのAPIを呼び出す場合、EC2インスタンスにロールを適用するなどして、プログラムにシークレットキーなどを記述しなくてもよくなる。これを使用することで、認証情報を外部に漏洩してしまうリスクを低減させることができる。

また、IAMロールは別のAWSアカウントに適用することができる。これによって、アカウントAがアカウントBのロールを適用してもらって、アカウントBのクラウドリソースにアクセスすることも可能。これを クロスアカウントアクセス と呼ぶ。

AWS Security Token Service (STS)

AWSリソースへの 一時的セキュリティ認証情報 を持つユーザーを動的に作成することができるサービス。 一時的セキュリティ認証情報は、IAMユーザーが使用できる長期的なアクセスキー認証情報とほとんど同じだが、使用期限が短くなっていたり、ユーザーとともに保存されることはない。 (所謂、IAMロールのことだ)

これを利用することにより、アプリケーションへの長期の認証情報を配布したり埋め込んだりする必要がなくなる。

エンタープライズIDフェデレーション

組織のネットワークのユーザーを認証し、ユーザーがAWSにアクセス可能にすることができる。それらのユーザーのために新しいAWS IDを作成したり、他のユーザー名とパスワードでサインインしてもらったり必要がなくなる。

これは、一時アクセスに対するシングルサインオン (SSO) アプローチとして知られている。

ウェブIDフェデレーション

よく知られているサードパーティのIDプロバイダー (Amazon, Facebook, Googleなど) を使用して、ユーザーにサインインしてもらうことができる。ユーザーはプロバイダの認証情報を、AWSアカウントのリソースを利用するための一時的なアクセス権限に変換することができる。

これは、一時アクセスに対するウェブIDフェデレーションアプローチとして知られている。

IAMの権限階層

種類 権限
1. AWSアカウント 全ての操作が可能
2. IAMユーザー ユーザーやグループに対して割り当てられた権限
3. フェデレーションユーザー トークン作成時に決定

IAMベスプラクティス

  • AWSアカウント (ルート) のアクセスキーをロックする
  • 個々のAWSアカウントを作成する
  • 強度の高いパスワードを設定する
  • 特権ユーザーに対して、MFAを有効化する
  • IAMユーザーにはIAMグループを使用して権限を渡す
  • IAMロールを使用して、ユーザーやEC2インスタンスに適切な権限を一時的に渡す
  • 不要な認証情報は削除する
  • AWSアカウントのアクティビティ履歴は保持する

まとめ

  • IAMを利用することで、よりセキュアにAWSサービスを利用できる
  • STSをうまく利用することで、AWSサービスなどをモバイルから扱うことができる
  • IAMは無料

参考

results matching ""

    No results matching ""