👤

[AWS]IAMとは?

1 min read

Identity and Access Managementの略で
AWSのサービスに認証、認可を行うことができるサービスです。

IAMを設定することにより下記の図のように
特定のS3にアクセスさせたり、逆に特定のS3にアクセスさせなくしたりできます

IAMの主要な要素

〜〜 ポリシー 〜〜

ポリシーは基本的にどのユーザーどのAWSサービスどのような操作を許可するかを設定する文書(json形式で記載する)

例
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
	    "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
	    "Resource": [
                "arn:aws:s3:::<バケット名>",
                "arn:aws:s3::: <バケット名>/*"
            ],
	   "Condition": {
	       "StringNotEquals": {
	           "aws:username": "<ユーザ名>"
           }
        }
    ]
}

上記のサンプルコードだと対象のユーザーのみ対象のS3バケットと、S3バケット配下全ファイルにs3:ListBuckets3:GetObjectの権限が付与されている

Effect

Allow → 許可
Deny → 拒否

Action

対象のAWSサービス。上記のサンプルコードだとS3を対象としている

Resource

対象のAWSリソース。上記のサンプルコードだと対象のS3バケットとバケットは以下の全ファイルを*で指定している

Condition

様々な条件でアクセス制御ができる。上記のサンプルコードだと対象のユーザーを指定している

〜〜 ユーザー 〜〜

IAMポリシーをアタッチされてAWSサービスにアクセスされるユーザーのこと
※ルートアカウントはAWS作成時に作成されるユーザーでIAMユーザーではない

〜〜 グループ 〜〜

IAMグループ自体にIAMポリシーをアタッチして、そのグループ内にIAMユーザーを設定することにより
複数のユーザーを一括して権限の設定ができる。
※IAMユーザーに個別にポリシーをアタッチして権限操作をするのは非効率なのでグループを作成してまとめてアタッチする

〜〜 ロール 〜〜

IAMユーザーに対してではなくAWSリソースに対して設定するもの

上記の画像だとIAMロールをアタッチしていないとEC2からS3にアクセスはできないが
IAMロールに適切なポリシーをアタッチしたものをEC2にアタッチすることによってS3にアクセスできるようになる

IAMユーザーのベストプラクティス

  • 通常はルートアカウントを使用しない
  • IAMユーザーをユーザーごとに作成してそのIAMユーザーで操作を行う
  • IAMユーザーやIAMグループには必要最小限の権限のみを付与する
  • MFA(多要素認証)を有効にする
  • アクセスキーを共有しない
  • 不要な認証情報の削除をする

Discussion

ログインするとコメントできます