AWSの専門用語(AWS IAMとは)

広告

AWSでリソースにアクセスするまでの流れ

AWS上のリソースにアクセスする際には、認証や認可などのセキュリティチェックが行われます。
以下のような流れAWSリソースにアクセスされます。
AWSのアクセスの流れ(1)

上記のそれぞれの項目の概要は以下の通りです。
(1) プリシンバル
プリシンバルとは、AWSリソースにリクエストできるユーザー又はアプリケーションのことです。
ユーザ、グループ、ロール、アプリケーションのことを指します。

(2) 認証
認証とは、AWSリソースのアクセスする際の認証情報のことです。
AWS管理コンソールでのユーザ名やパスワード、APIまたはAWS CLIから認証でのアクセスキーとシークレットキーのことを指します。

(3) リクエスト
リクエストとは、プリシンバルがAWSリソースに送る命令です。
リクエストには、どのAWSリソースに対して、何のデータを送って、どのような処理をするかといいたデータが含まれています。

(4) 認可
認可とは、AWSに送られたリクエストは許可された処理かどうかを判断して、許可されている場合のみ処理します。
例えば、Amazon S3のバケットに対して許可されていないユーザがリクエストを送った場合は、処理することができません。

(5) アクション/オペレーション
アクション/オペレーションとは、AWSリソースの表示、作成、編集、削除などリソースに対して実行できる処理です。

(6) AWSリソース
AWSリソースとは、Amazon EC2インスタンス、Amazon S3バケットなどAWSサービス内にあるオブジェクトです。

AWS IAMとは

AWS IAMとは、Identity and Access Managementの略で、AWSリソースへのアクセス権限を設定します。
AWS IAMは主に4種類に分けることができます。

(1) IAMユーザ
IAMユーザとは、AWSリソースにアクセスするためのユーザです。
AWS上では以下の特殊なアカウントがあり、それぞれ名称があります。
 (a) ルートアカウント(IAMではありません。)
     AWSアカウント作成時に自動で作成されるアカウントです。
     全てのAWSリソースにアクセスすることができます。
 (b) 管理者権限
     管理者権限が付与されたアカウントです。
     ルートアカウントより操作できる権限は少ないですが、ほぼ全ての操作ができます。
 (c) パワーユーザ
     IAM以外の全てのAWSサービスにフルアクセス権限が付与されたアカウントです。

(2) IAMグループ
IAMグループとは、IAMユーザの集まりです。
例えば、部署ごとに共有のアクセス権限を付与する場合など複数のIAMユーザに共通の権限を府とする場合に使用します。

(3) IAMポリシー
IAMポリシーとは、AWSにアクセスする際の権限を定義します。
どのAWSリソースに対して、どのような処理を、許可/拒否するかどうかといった詳細に設定できます。
IAMポリシーをIAMユーザ、IAMグループ、IAMロールに付与してアクセス権を設定します。

(4) IAMロール
IAMロールとは、AWSリソースへのアクセス権限を定義します。
AWSリソースにIAMロールを付与してアクセス権を割り当てます。

IAMポリシーの設定について

IAMポリシーはJSON形式で設定します。
例えば、以下の設定をした場合、それぞれの設定項目の内容は以下の通りです。

設定項目概要
VersionIAMポリシーの構文ルールのバージョンを指定します。
2021年8月19日時点では、最新バージョンである「2012-10-17」を設定します。
StatementStatement内にIAMポリシーのメインの設定を指定します。
Effectリソースへのアクセスを許可(Allow)するか拒否(Deny)するか設定します。
Actionどのようなアクション(操作)に対して許可(Allow)するか拒否(Deny)するかを設定します。
例えば、認証情報レポートを作成する場合は、「iam:GenerateCredentialReport」を指定します。
ResourceIAMポリシーで制御するオブジェクトを指定します。
全てのオブジェクトが対象の場合は、「*」を設定します。
{
    "Version": "2012-10-17",
    "Statement": [ {
        "Effect": "Allow",
        "Action": [
            "iam:GenerateCredentialReport",
            "iam:Get*",
            "iam:List*"
        ],
        "Resource": "*"
    } ]
}


上記のIAMポリシーの設定で許可されている範囲をベン図で表すと以下のようにします。
IAMポリシーの許可設定のイメージ図

また、IAMポリシーは以下の優先順位でアクセスを許可(Allow)するか拒否(Deny)するか判断します。
最初の状態で「暗黙的なDeny」が設定されているため、明示的に許可(Allow)の設定をしないと、何もアクセスができません。

 【IAMロールのアクセス制御の判断の優先度】
   暗黙的なDeny(デフォルト) > 明示的なAllow > 明示的なDeny

AWS IAMのベストプラクティス

AWS IAMでセキュリティを確保するために、以下のベストプラクティスに従うことが推奨されています。

  1. AWSアカウントルートユーザーアクセスキーをロックする
  2. 個々のIAMユーザーを作成する
  3. IAMユーザーにアクセス許可を割り当てるためには、ユーザーグループを使用する
  4. 最小限の特権を認める。
  5. AWS管理ポリシーを使用したアクセス許可の使用開始
  6. ポリシーの検証
  7. インラインポリシーではなくカスタマー管理ポリシーを使用する
  8. アクセスレベルを使用して、IAM アクセス許可を確認する
  9. ユーザーのために強度の高いパスワードポリシーを設定する
  10. MFAの有効化
  11. Amazon EC2インスタンスで実行するアプリケーションに対し、ロールを使用する
  12. ロールを使用してアクセス許可を委任する
  13. アクセスキーを共有しない
  14. 認証情報を定期的にローテーションする
  15. 不要な認証情報の削除
  16. 追加セキュリティに対するポリシー条件を使用する
  17. AWSアカウントのアクティビティの監視

上記のベストプラクティスの詳細については、以下のAWSの公式サイトをご確認ください。

IAM でのセキュリティのベストプラクティス - AWS Identity and Access Management
AWS Identity and Access Management (IAM) を使用する際のベストプラクティスに従って、AWS アカウントとリソース保護します。

AWS IAMのポリシータイプ

IAMポリシーには、用途に応じて様々なタイプがあります。
ポリシータイプの概要は以下の通りです。

(1) アイデンティティベースのポリシー
IAM ユーザー、グループ、ロールにアタッチして、アクセス権を設定します。
アイデンティティベースのポリシーには、以下の3つがあります。
 (a) AWS管理ポリシー
     AWSにて事前に定義されているIAMポリシーです。
     別のAWSアカウントからでも使用できます。
     AWS管理ポリシーのアクセス権は不定期に更新されます。
 (b) カスタマー管理ポリシー
     利用者が独自に定義するIAMポリシーです。
     同じAWSアカウントからのみ使用できます。
 (c) インラインポリシー
     IAMアイデンティティ(ユーザー、グループ、またはロール)に埋め込むポリシーです。
     IAMアイデンティティに1体1で適用するため、再利用することができません。
     インラインポリシーは昔の設定方法で非推奨の設定です。
     インラインポリシーではなく、カスタマー管理ポリシーの使用が推奨されています。

(2) リソースベースのポリシー
AWSリソースにアタッチして、アクセス権を設定します。
 (a) AWS IAMロールの信頼ポリシー
     信頼ポリシーでは、一時的な権限を付与します。
 (b) Amazon S3のバケットポリシー
     バケットポリシーでは、Amazon S3にアクセス許可を付与します。
 (c) Amazon SNSトピックのアクセス許可
     別のアカウントが所有するAmazon SNSトピックを使用できる設定です。

(3) パーミッションバウンダリー
AWSでアクセス許可する範囲を設定します。
AWS IAMアクセス許可の境界、AWS Organizationsサービスコントロールポリシー(SCP)のことです。

上記の内容にてアクセス制御した場合、許可された範囲を以下の論理図で表されます。
AWSのアクセス制御の論理式

(4) アクセスコントロールポリシー(ACL)
リソースにアクセスできるプリシンバル(IAMユーザ等)を制限します。
Amazon S3のバケットのACL、Amazon VPCのサブネットACLなどのことです。

(5) セッションポリシー
ロールまたはフェデレーティッドユーザーの一時セッションをプログラムで作成する際にパラメータを渡します。
セッションポリシーでは、作成したセッションのアクセス許可が制限されますが、アクセス許可は付与されません。

IAMデータベース認証

通常データベースにアクセスする際の認証はユーザ名とパスワードを用います。
IAMデータベース認証を用いることで、以下の2つを使用して認証できます。

  • IAMユーザーまたはIAMロール
  • 認証トークン(パスワードの代わりに使用する文字列)

また、認証トークンは以下のようなIAMポリシーを設定します。

{ 
    "Version": "2012-10-17", 
    "Statement": [ {
        "Effect": "Allow", 
        "Action": [ "rds-db:connect" ], 
        "Resource": [ "arn:aws:rds-db:【リージョン】:【アカウントID】:【データベースユーザ名】:*/*" ] 
    } ] 
}

AWS IAMの料金

AWS IAMは利用する際は追加料金は掛かりません。

AWSに関する記事

AWSについての関連記事は以下の通りです。
必要に応じて、ご確認ください。

Noタイトル
1AWSの詳細設計書(パラメータシートのサンプル)
2AWS クラウドプラクティショナーの合格までの道(試験の概要と勉強方法)
3AWSの専門用語(リージョン、アベイラビリティゾーン、エッジロケーションとは)
4AWSの専門用語(AWS IAMとは)
5AWSの専門用語(Amazon VPCとは)
6AWSの専門用語(Amazon S3及びAmazon S3 Glacierとは)
7AWSの専門用語(EC2:Elastic Compute Cloudとは)
8AWSの専門用語(Amazon EBS:Elastic Block Storeとは)
9AWSの専門用語(ELB:Elastic Load Balancingとは)
10AWSの専門用語(Amazon RDSとは)
11AWSの専門用語(Amazon Auroraとは)
12AWSの専門用語(AWS DynamoDBとは)
13AWSの専門用語(Amazon ElastiCacheとは)
14AWSの専門用語(AWS Auto Scalingとは)
15AWSの専門用語(Amazon Lightsailとは)
16AWSの専門用語(AWS CloudTrailとは)
17AWSの専門用語(AWS Configとは)
18AWSの専門用語(AWS Organizationsとは)
19AWSの専門用語(AWS Lambdaとは)
20AWSの専門用語(Amazon EFSとは)
21AWSの専門用語(Amazon FSx for Windows File Serverとは)
22AWSの専門用語(Amazon FSx for Lustreとは)
23AWSの専門用語(Amazon Elastic Kubernetes Serviceとは)
24AWSの専門用語(Amazon Elastic Container Registryとは)
25AWSの専門用語(Amazon Elastic Container Serviceとは)
26AWSの専門用語(AWS Shieldとは)
27AWSの専門用語(AWS WAFとは)
28AWSの専門用語(AWS Batchとは)
29AWSの専門用語(Amazon CloudWatchとは)
30AWSの専門用語(Amazon Inspectorとは)
31AWSの専門用語(AWS Artifactとは)
32AWSの専門用語(Amazon API Gatewayとは)
33AWSの専門用語(AWS Security Hubとは)
34AWSの専門用語(AWS サポートとは)
35AWSの専門用語(AWS Key Management Serviceとは)
36AWSの専門用語(AWS Database Migration Serviceとは)
37AWSの専門用語(AWS CLIとは)