

# IAM のビジネスユースケース
<a name="business-use-cases"></a>

IAM の簡単なビジネスユースケースを紹介します。お客様のユーザーが持っている AWS アカウントをコントロールするサービスを実装できる基本的な方法を解説します。ユースケースでは、お客様が求めている結果を得るために IAM API を使用する方法を、一般的に説明しています。

このユースケースでは、Example Corp という架空の企業が IAM を使用する典型的な 2 つの方法を検討します。最初のシナリオは、Amazon Elastic Compute Cloud (Amazon EC2) です。2 つ目は、Amazon Simple Storage Service (Amazon S3) です。

IAM と AWS の他のサービスとの連携の詳細については、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を参照してください。

**Topics**
+ [Example Corp の初期設定](#InitSetupExampleCorp_IAM)
+ [Amazon EC2 での IAM ユースケース](#UseCase_EC2)
+ [Amazon S3 での IAM のユースケース](#UseCase_S3)

## Example Corp の初期設定
<a name="InitSetupExampleCorp_IAM"></a>

Nikki Wolf と Mateo Jackson は Example Corp の創設者です。彼らは、同社の設立時に AWS アカウント を作成し、さらに AWS リソースで使用する管理者アカウントを作成するために、AWS IAM アイデンティティセンター (IAM Identity Center) をセットアップします。管理ユーザーのアカウントへのアクセス権をセットアップすると、対応する IAM ロールが IAM Identity Center により作成されます。この、IAM Identity Center が制御するロールは、関連する AWS アカウント に作成され、**[AdministratorAccess]** アクセス許可セットで指定されたポリシーがアタッチされています。

現在、Nikki と Mateo は管理用アカウントが使用できるようになったので、ルートユーザーにより AWS アカウント にアクセスする必要がなくなりました。ルートユーザーは、ルートユーザーのみが実行可能なタスク用だけに使用する予定です。セキュリティ上のベストプラクティスを見直した後、彼らはルートユーザーの認証情報のために多要素認証 (MFA) を設定し、ルートユーザーの保護方法を確立します。

会社が成長するにつれ、彼らは、開発者、管理者、テスト担当、マネージャー、そしてシステム管理者として働く従業員を招き入れます。運用を担当するのは Nikki で、Mateo はエンジニアリングチームを指揮します。従業員のアカウントの管理と、社内リソースへのアクセス管理には、Active Directory ドメインサーバーをセットアップします。

従業員に AWS リソースへのアクセス権を付与するためには、IAM Identity Center を使用して、会社の Active Directory を AWS アカウント に接続しています。

Active Directory が IAM Identity Center が接続されているため、ユーザー、グループ、およびグループのメンバーシップを定義し同期することができます。AWS リソースへのアクセス権限を適切なレベルでユーザに付与するには、許可セットとロールをさまざまなグループに割り当てる必要があります。これらの許可セットを作成するためには、AWS マネジメントコンソール から [AWSジョブ機能の 管理ポリシー](access_policies_job-functions.md) を使用します。
+ 管理者
+ 請求
+ 開発者
+ ネットワーク管理者
+ データベース管理者
+ システム管理者
+ サポートユーザー

次に、これらの許可セットを、自社の Active Directory グループに割り当てられたロールに割り当てます。

IAM Identity Center の初期設定についてのステップバイステップガイドは、「AWS IAM アイデンティティセンター ユーザーガイド」の「[Getting started](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-assign-account-access-admin-user.html)」(使用開始) で確認してください。IAM Identity Center ユーザーアクセスのプロビジョニングの詳細については、「AWS IAM アイデンティティセンター ユーザーガイド」の「[AWS アカウントへのシングルサインオンアクセス](https://docs.aws.amazon.com/singlesignon/latest/userguide/useracces.html)」を参照してください。

## Amazon EC2 での IAM ユースケース
<a name="UseCase_EC2"></a>

一般的に、Example Corp のような会社は IAM を使用して Amazon EC2 などのサービスとやり取りします。ユースケースの当該部分を理解するには、Amazon EC2 の基本的な理解が必要となります。Amazon EC2 の詳細については、「[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)」を参照してください。

### ユーザーグループの Amazon EC2 アクセス許可
<a name="EC2_PermissionsGroups"></a>

「境界」の制御を構築するため、John は AllUsers ユーザーグループにポリシーをアタッチします。このポリシーは、元の IP アドレスが Example Corp の企業ネットワークの外部にある場合、ユーザーからの AWS 要求を拒否します。

Example Corp では、IAM グループごとに異なるアクセス許可が必要です。
+ **システム管理者** – AMI、インスタンス、スナップショット、ボリューム、セキュリティグループなどの作成および管理のアクセス許可が必要です。Nikki は、ユーザーグループのメンバーがすべての Amazon EC2 アクションを使用できるように許可する AWS マネージドポリシー `AmazonEC2FullAccess` を、SysAdmins ユーザーグループにアタッチします。
+ **デベロッパー** – インスタンスを使用する機能のみが必要です。従って Mateo は、`DescribeInstances`、`RunInstances`、`StopInstances`、`StartInstances`、`TerminateInstances` の呼び出し許可を開発者に与えるためにポリシーを作成し、それを Developers ユーザーグループにアタッチします。
**注記**  
Amazon EC2 は SSH キー、Windows パスワードおよびセキュリティグループを使用して、特定の Amazon EC2 インスタンスのオペレーティングシステムへのアクセス許可を持つユーザーを制御します。IAM システムには、特定のインスタンスのオペレーティングシステムへのアクセスを許可または拒否するメソッドは存在しません。
+ **サポートユーザー** – 現在使用可能な Amazon EC2 リソースの一覧表示を除き、いずれの Amazon EC2 アクションも実行することはできません。そのため、Nikki は Amazon EC2 の「Describe」API オペレーションのみを呼び出せるようにするポリシーを作成してサポートユーザーグループにアタッチします。

これらのポリシーの記述例については、「Amazon EC2 ユーザーガイド」の「[IAM アイデンティティベースのポリシーの例](access_policies_examples.md)」および「[AWS Identity and Access Management の使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/index.html?UsingIAM.html)」を参照してください。

### ユーザーのジョブ関数の変更
<a name="EC2_UserRoleChange"></a>

ある時点において、開発者の 1 人である Paulo Santos の職務機能が変更され、マネージャーになりました。マネージャーである Paulo は、サポートユーザーグループの一員となり、開発者のためのサポートケースを開けるようになります。Mateo は、Paulo を Developers ユーザーグループからサポートユーザーグループに移動します。この移動の結果、Amazon EC2 インスタンスを操作する際の彼の権限は制限されます。Don はインスタンスの起動や開始をすることができません。また Don がインスタンスを起動または開始させた人物だったとしても、既存のインスタンスの停止や終了をすることができません。Don は、Example Corp のユーザーが起動するインスタンスを表示することのみできます。

## Amazon S3 での IAM のユースケース
<a name="UseCase_S3"></a>

Example Corp のような会社では、IAM と Amazon S3 も使用するのが一般的です。John は会社用に amzn-s3-demo-bucket という Amazon S3 バケットを作成しました。

### その他のユーザーおよびユーザーグループの作成
<a name="S3_CreationOtherUsersGroups"></a>

Zhang Wei と Mary Major は、従業員として会社のバケットに自分用のデータを作成する必要があります。また、すべての開発者が作業する共有データを読み取りや書き込みをする必要があります。これを可能にするため、Mateo は次の図のように Amazon S3 キープレフィックススキームを使用して、「amzn-s3-demo-bucket」にあるデータを論理的に配置します。

```
/amzn-s3-demo-bucket
    /home
        /zhang
        /major
    /share
        /developers
        /managers
```

Mateo は、`/amzn-s3-demo-bucket` を、各従業員用の一連のホームディレクトリと、開発者グループおよびマネージャーグループ用の共有エリアに分割します。

そして、Mateo はユーザーおよびユーザーグループにアクセス許可を割り当てるための一連のポリシーを作成します。
+ **Zhang のホームディレクトリアクセス** – Mateo は、Amazon S3 キープレフィックス `/amzn-s3-demo-bucket/home/zhang/` の付いたすべてのオブジェクトの読み取り、書き込み、一覧表示を許可するポリシーを Wei にアタッチします。
+ **Major のホームディレクトリアクセス** – Mateo は、Amazon S3 キープレフィックス `/amzn-s3-demo-bucket/home/major/` の付いたすべてのオブジェクトの読み取り、書き込み、一覧表示を許可するポリシーを Mary にアタッチします。
+ **開発者ユーザーグループによる共有ディレクトリへのアクセス** – Mateo は、`/amzn-s3-demo-bucket/share/developers/` 内のすべてのオブジェクトの読み取り、書き込み、一覧表示を開発者に許可するポリシーを、このユーザーグループにアタッチします。
+ **マネージャーユーザーグループの共有ディレクトリアクセス** – Mateo は、`/amzn-s3-demo-bucket/share/managers/` 内のオブジェクトの読み取り、書き込み、一覧表示をマネージャーに許可するポリシーを、このユーザーグループにアタッチします。

**注記**  
 Amazon S3はバケットまたはオブジェクトを作成するユーザーに、そのバケットまたはオブジェクトに対してその他のアクションを実行するアクセス許可を自動的に付与することはありません。したがって、IAM ポリシーでは、作成する Amazon S3 リソースを使用する明示的なアクセス許可をユーザーに付与する必要があります。

これらのポリシーの例については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html)の「*アクセスコントロール*」を参照してください。ランタイムでのポリシーの評価方法の詳細については、「[ポリシーの評価論理](reference_policies_evaluation-logic.md)」を参照してください。

### ユーザーのジョブ関数の変更
<a name="S3_UserRoleChange"></a>

ある時点において、開発者の 1 人である Zhang Wei の職務機能が変更され、マネージャーに変わります。彼は、`share/developers` ディレクトリ内のドキュメントにアクセスする必要がなくなったとみなされます。管理者である Mateo は、Wei を `Developers` ユーザーグループから外し `Managers` ユーザーグループへ移動させます。この簡単な再割り当てだけで、Wei には自動的に `Managers` ユーザグループへのすべてのアクセス許可が与えられますが、`share/developers` ディレクトリ内のデータにはアクセスできなくなります。

### サードパーティービジネスとの統合
<a name="S3_3rdPartyBusiness"></a>

組織は、頻繁に提携会社、コンサルタント、請負業者と組んで仕事をすることがあります。Example Corp は Widget Company と提携しています。Widget Company の従業員である Shirley Rodriguez は、Example Corp の使用しているバケットにデータを入力する必要があります。Nikki は、WidgetCo というユーザーグループ、そして `Shirley` というユーザーを作成し、この WidgetCo ユーザーグループに Shirley を追加します。また、Nikki は Shirley が使用するための特別なバケット、amzn-s3-demo-bucket1 も作成します。

Nikki は、パートナーの Widget Company に提供するために、既存のポリシーの更新または新規ポリシーの追加を行います。例えば、Nikki は WidgetCo ユーザーグループのメンバーに対し、書き込み以外のいかなるアクションも拒否するという新規ポリシーを作成することができます。このポリシーは、広範囲にわたる一連の Amazon S3 アクションへのアクセス許可をすべてのユーザーに与えるような広義のポリシーが存在する場合にのみ必要となります。