

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Image Builder でのセキュリティ
<a name="image-builder-security"></a>

のクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャを活用できます。

セキュリティは、 AWS お客様とお客様の間の責任共有です。[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)ではこれをクラウド*の*セキュリティおよびクラウド*内*のセキュリティと説明しています。
+ **クラウドのセキュリティ** – クラウド AWS のサービス で AWS 実行されるインフラストラクチャを保護する AWS 責任があります。 AWS また、 では、安全に使用できるサービスも提供しています。サードパーティーの監査者は、[AWS コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)コンプライアンスプログラムの一環として、当社のセキュリティの有効性を定期的にテストおよび検証。EC2 Image Builder に適用されるコンプライアンスプログラムについては、[AWS のサービス コンプライアンスプログラム別適用範囲](https://aws.amazon.com/compliance/services-in-scope/)を参照してください。
+ **クラウドのセキュリティ** – お客様の責任は、使用する AWS サービスによって決まります。また、ユーザーは、データの機密性、会社の要件、適用される法律や規制など、その他の要因についても責任を負います。

このドキュメントは、Image Builder を使用する際の責任共有モデルの適用方法を理解するのに役立ちます。以下のトピックでは、セキュリティおよびコンプライアンス目標を満たすために Image Builder を設定する方法について説明します。また、Image Builder リソースのモニタリングと保護 AWS のサービス に役立つ他の の使用方法についても説明します。

**Topics**
+ [Image Builder でのデータ保護と責任 AWS 共有モデル](data-protection.md)
+ [Identity and Access Management と Image Builder の統合](security-iam.md)
+ [Image Builder のコンプライアンス検証](compliance.md)
+ [Image Builder のデータの冗長性と回復性](disaster-recovery-resiliency.md)
+ [Image Builder でのインフラストラクチャセキュリティ](infrastructure-security.md)
+ [Image Builder イメージのパッチ管理](security-patch-management.md)
+ [Image Builder でのセキュリティのベストプラクティス](security-best-practices.md)

# Image Builder でのデータ保護と責任 AWS 共有モデル
<a name="data-protection"></a>

責任 AWS [共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)、EC2 Image Builder でのデータ保護に適用されます。このモデルで説明されているように、 AWS はすべての を実行するグローバルインフラストラクチャを保護する責任があります AWS クラウド。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。また、使用する「 AWS のサービス 」のセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、[データプライバシーに関するよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/)を参照してください。欧州でのデータ保護の詳細については、*AWS セキュリティブログ*に投稿された「[AWS 責任共有モデルおよび GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」のブログ記事を参照してください。

データ保護の目的で、認証情報を保護し AWS アカウント 、 AWS IAM アイデンティティセンター または AWS Identity and Access Management (IAM) を使用して個々のユーザーを設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 は必須ですが、TLS 1.3 を推奨します。
+ で API とユーザーアクティビティのログ記録を設定します AWS CloudTrail。CloudTrail 証跡を使用して AWS アクティビティをキャプチャする方法については、「 *AWS CloudTrail ユーザーガイド*」の[CloudTrail 証跡の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)」を参照してください。
+  AWS 暗号化ソリューションと、その中のすべてのデフォルトのセキュリティコントロールを使用します AWS のサービス。
+ Amazon Macie などの高度な管理されたセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。
+ コマンドラインインターフェイスまたは API AWS を介して にアクセスするときに FIPS 140-3 検証済み暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「[連邦情報処理規格 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報を、タグ、または **[名前]** フィールドなどの自由形式のテキストフィールドに含めないことを強くお勧めします。これは、コンソール、API、または SDK を使用して Image Builder AWS CLIまたは他の AWS のサービス を操作する場合も同様です。 AWS SDKs タグ、または名前に使用される自由記述のテキストフィールドに入力したデータは、請求または診断ログに使用される場合があります。外部サーバーに URL を提供する場合、そのサーバーへのリクエストを検証できるように、認証情報を URL に含めないことを強くお勧めします。

## Image Builder での暗号化とキーの管理
<a name="ib-encryption"></a>

Image Builder は、以下を除き、デフォルトでサービス所有の KMS キーを使用して転送中および保存中のデータを暗号化します。
+ **カスタムコンポーネント** — Image Builder は、デフォルトの KMS キーまたはサービス所有の KMS キーを使用してカスタムコンポーネントを暗号化します。
+ **イメージワークフロー** – Image Builder は、ワークフローの作成時にカスタマーマネージドキーを指定すると、イメージワークフローをそのキーで暗号化できます。Image Builder は、キーを使用して暗号化と復号化を処理し、画像に設定したワークフローを実行します。

を使用して独自のキーを管理できます AWS KMS。ただし、Image Builder が所有するImage Builder KMS キーを管理する権限はありません。で KMS キーを管理する方法の詳細については AWS Key Management Service、「 AWS Key Management Service デベロッパーガイド」の「開始方法[https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)」を参照してください。

**暗号化コンテキスト**  
暗号化されたデータの整合性と信頼性をさらに確認するために、データを暗号化するときに[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)を含めることもできます。リソースが暗号化コンテキストで暗号化されると、 AWS KMS は暗号化コンテキストを暗号化テキストに暗号化バインドします。リソースを復号化できるのは、リクエスタがコンテキストと完全に一致させ、大文字と小文字を区別して一致させた場合のみです。

このセクションでのポリシー例では、Image Builder ワークフローリソースの Amazon リソースネーム (ARN) に似た暗号化コンテキストを使用しています。

### カスタマーマネージドキーを使用してイメージワークフローを暗号化する
<a name="ib-workflow-encrypt-cmk"></a>

保護を強化するために、Image Builder ワークフローリソースを独自のカスタマーマネージドキーで暗号化できます。カスタマーマネージドキーを使用して作成した Image Builder ワークフローを暗号化する場合、Image Builder がワークフローリソースを暗号化および復号化するときにそのキーを使用するように、キーポリシーでアクセス権を付与する必要があります。アクセスはいつでも取り消すことができます。ただし、キーへのアクセス権を取り消すと、Image Builder はすでに暗号化されているワークフローにアクセスできなくなります。

Image Builder にカスタマーマネージドキーを使用するアクセス権を付与するプロセスには、次の 2 つのステップがあります。

**ステップ 1: Image Builder ワークフローにキーポリシー権限を追加する**  
Image Builder がワークフローを作成または使用するときにワークフローリソースを暗号化および復号化できるようにするには、KMS キーポリシーで権限を指定する必要があります。

このサンプルキーポリシーは、Image Builder パイプラインにアクセス権を付与して、作成プロセス中にワークフローリソースを暗号化し、ワークフローリソースを復号化して使用できるようにします。このポリシーでは、キー管理者にもアクセス権限が付与されます。暗号化コンテキストとリソース仕様では、ワークフローリソースがあるすべてのリージョンを対象にワイルドカードを使用しています。

イメージワークフローを使用するための前提条件として、Image Builder にワークフローアクションを実行する権限を付与する IAM ワークフロー実行ロールを作成しました。このキーポリシーの例で示した最初のステートメントのプリンシパルは、IAM ワークフロー実行ロールを指定する必要があります。

カスタマーマネージドキーの詳細については、「AWS Key Management Service デベロッパーガイド」の「[カスタマーマネージドキーへのアクセスを管理する](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "Allow access to build images with encrypted workflow",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:role/YourImageBuilderExecutionRole"
			},
			"Action": [
				"kms:Decrypt",
				"kms:GenerateDataKey"
			],
			"Resource": "*",
			"Condition": {
				"StringLike": {
					"kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*"
				}
			}
		},
		{
			"Sid": "Allow access for key administrators",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:root"
			},
			"Action": [
				"kms:*"
			],
			"Resource": "arn:aws:kms:*:111122223333:key/*"
		}
	]
}
```

------

**ステップ 2: ワークフロー実行ロールへのキーアクセス権を付与する**  
Image Builder がワークフローを実行するために引き受ける IAM ロールには、カスタマーマネージドキーを使用する権限が必要です。キーにアクセスできないと、Image Builder はキーを使用してワークフローリソースを暗号化または復号化できません。

ワークフロー実行ロールのポリシーを編集して、次のポリシーステートメントを追加します。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowAccessToWorkflowKey",
			"Effect": "Allow",
			"Action": [
				"kms:Decrypt",
				"kms:GenerateDataKey"
			],
			"Resource": "arn:aws:kms:us-west-2:111122223333:key/key_ID",
			"Condition": {
				"StringLike": {
					"kms:EncryptionContext:aws:imagebuilder:arn": "arn:aws:imagebuilder:*:111122223333:workflow/*"
				}
			}
		}
	]
}
```

------

### AWS CloudTrail イメージワークフローの イベント
<a name="ib-workflow-cloudtrail-examples"></a>

次の例は、カスタマーマネージドキーに保存されているイメージワークフローを暗号化および復号するための一般的な AWS CloudTrail エントリを示しています。

**例: GenerateDataKey**  
この例では、Image Builder が Image Builder API アクションから API **CreateWorkflow**アクションを AWS KMS **GenerateDataKey**呼び出すと、CloudTrail イベントがどのようになるかを示します。Image Builder は、ワークフローリソースを作成する前に新しいワークフローを暗号化する必要があります。

```
{
	"eventVersion": "1.08",
	"userIdentity": {
		"type": "AssumedRole",
		"principalId": "PRINCIPALID1234567890:workflow-role-name",
		"arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name",
		"accountId": "111122223333",
		"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"sessionContext": {
			"sessionIssuer": {
				"type": "Role",
				"principalId": "PRINCIPALID1234567890",
				"arn": "arn:aws:iam::111122223333:role/Admin",
				"accountId": "111122223333",
				"userName": "Admin"
			},
			"webIdFederationData": {},
			"attributes": {
				"creationDate": "2023-11-21T20:29:31Z",
				"mfaAuthenticated": "false"
			}
		},
		"invokedBy": "imagebuilder.amazonaws.com"
	},
	"eventTime": "2023-11-21T20:31:03Z",
	"eventSource": "kms.amazonaws.com",
	"eventName": "GenerateDataKey",
	"awsRegion": "us-west-2",
	"sourceIPAddress": "imagebuilder.amazonaws.com",
	"userAgent": "imagebuilder.amazonaws.com",
	"requestParameters": {
		"encryptionContext": {
			"aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*",
			"aws-crypto-public-key": "key value"
		},
		"keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleKMSKey",
		"numberOfBytes": 32
	},
	"responseElements": null,
	"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
	"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
	"readOnly": true,
	"resources": [
		{
			"accountId": "111122223333",
			"type": "AWS::KMS::Key",
			"ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz"
		}
	],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "111122223333",
	"eventCategory": "Management"
}
```

**例: Decrypt**  
この例では、Image Builder が Image Builder API アクションから API **GetWorkflow**アクションを AWS KMS **Decrypt**呼び出すと、CloudTrail イベントがどのようになるかを示します。Image Builder パイプラインは、ワークフローリソースを使用する前に復号化する必要があります。

```
{
	"eventVersion": "1.08",
	"userIdentity": {
		"type": "AssumedRole",
		"principalId": "PRINCIPALID1234567890:workflow-role-name",
		"arn": "arn:aws:sts::111122223333:assumed-role/Admin/workflow-role-name",
		"accountId": "111122223333",
		"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"sessionContext": {
			"sessionIssuer": {
				"type": "Role",
				"principalId": "PRINCIPALID1234567890",
				"arn": "arn:aws:iam::111122223333:role/Admin",
				"accountId": "111122223333",
				"userName": "Admin"
			},
			"webIdFederationData": {},
			"attributes": {
				"creationDate": "2023-11-21T20:29:31Z",
				"mfaAuthenticated": "false"
			}
		},
		"invokedBy": "imagebuilder.amazonaws.com"
	},
	"eventTime": "2023-11-21T20:34:25Z",
	"eventSource": "kms.amazonaws.com",
	"eventName": "Decrypt",
	"awsRegion": "us-west-2",
	"sourceIPAddress": "imagebuilder.amazonaws.com",
	"userAgent": "imagebuilder.amazonaws.com",
	"requestParameters": {
		"keyId": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz",
		"encryptionAlgorithm": "SYMMETRIC_DEFAULT",
		"encryptionContext": {
			"aws:imagebuilder:arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/sample-encrypted-workflow/1.0.0/*",
			"aws-crypto-public-key": "ABC123def4567890abc12345678/90dE/F123abcDEF+4567890abc123D+ef1=="
		}
	},
	"responseElements": null,
	"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
	"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
	"readOnly": true,
	"resources": [
		{
			"accountId": "111122223333",
			"type": "AWS::KMS::Key",
			"ARN": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEzzzzz"
		}
	],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "111122223333",
	"eventCategory": "Management"
}
```

## Image Builder のデータストレージ
<a name="ib-data-storage"></a>

Image Builder はログをサービスに保存しません。すべてのログは、イメージの構築に使用される Amazon EC2 インスタンス、または Systems Manager 自動化ログに保存されます。

## Image Builder でのネットワーク内のトラフィックプライバシー
<a name="image-builder-internetwork"></a>

接続は、Image Builder とオンプレミスの場所間、 AWS リージョン内の AZs 間、および HTTPS 経由で AWS リージョン間で保護されます。アカウント間には直接接続はありません。

# Identity and Access Management と Image Builder の統合
<a name="security-iam"></a>

**Topics**
+ [オーディエンス](#security-iam-audience)
+ [アイデンティティを使用した認証](#security-iam-authentication)
+ [Image Builder と IAM ポリシーおよびロールとの連携](security_iam_service-with-iam.md)
+ [Image Builder で S3 バケットダウンロードアクセスのデータ境界を管理する](security-iam-data-perimeter.md)
+ [Image Builder のアイデンティティベースのポリシー](security-iam-identity-based-policies.md)
+ [カスタムワークフローの IAM アクセス許可](#security-iam-custom-workflows)
+ [Image Builder 内のリソースベースのポリシー](#security-iam-resource-based-policies)
+ [EC2 Image Builder の AWS マネージドポリシーを使用する](security-iam-awsmanpol.md)
+ [Image Builder での IAM サービスリンクロールの使用](image-builder-service-linked-role.md)
+ [Image Builder での IAM 問題のトラブルシューティング](security_iam_troubleshoot.md)

## オーディエンス
<a name="security-iam-audience"></a>

 AWS Identity and Access Management (IAM) の使用方法は、ロールによって異なります。
+ **サービスユーザー** - 機能にアクセスできない場合は、管理者にアクセス許可をリクエストします (「[Image Builder での IAM 問題のトラブルシューティング](security_iam_troubleshoot.md)」を参照)。
+ **サービス管理者** - ユーザーアクセスを決定し、アクセス許可リクエストを送信します (「[Image Builder と IAM ポリシーおよびロールとの連携](security_iam_service-with-iam.md)」を参照)
+ **IAM 管理者** - アクセスを管理するためのポリシーを作成します (「[Image Builder のアイデンティティベースのポリシー](security_iam_service-with-iam.md#security_iam_id-based-policy-examples)」を参照)

## アイデンティティを使用した認証
<a name="security-iam-authentication"></a>

でユーザーとプロセスに認証を提供する方法の詳細については AWS アカウント、*IAM ユーザーガイド*の[「アイデンティティ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。

# Image Builder と IAM ポリシーおよびロールとの連携
<a name="security_iam_service-with-iam"></a>

IAM を使用して Image Builder へのアクセスを管理する前に、Image Builder で使用できる IAM 機能について確認してください。

Image Builder およびその他の AWS のサービスがほとんどの IAM 機能と連携する方法の概要については、「IAM *ユーザーガイド*」の[AWS 「IAM と連携する のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Image Builder のアイデンティティベースのポリシー
<a name="security_iam_service-with-iam-id-based-policies"></a>

**アイデンティティベースのポリシーのサポート:** あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「*IAM ユーザーガイド*」の「[カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。JSON ポリシーで使用できるすべての要素について学ぶには、「*IAM ユーザーガイド*」の「[IAM JSON ポリシーの要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

### Image Builder のアイデンティティベースのポリシー例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Image Builder ID ベースのポリシーの例を見るには、[Image Builder のアイデンティティベースのポリシー](#security_iam_id-based-policy-examples)を参照してください。

## Image Builder 内のリソースベースのポリシー
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**リソースベースのポリシーのサポート:** あり

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM *ロールの信頼ポリシー*や Amazon S3 *バケットポリシー*があげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスをコントロールできます。ポリシーがアタッチされているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、[プリンシパルを指定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または を含めることができます AWS のサービス。

クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。詳細については、IAM ユーザーガイド**の[IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)を参照してください。

## Image Builder ポリシーアクション
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**ポリシーアクションのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。



Image Builder のアクションの一覧は、Service Authorization Reference の [EC2 Image Builder で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)を参照してください。

Image Builder のポリシーアクションは、アクションの前に次の接頭辞を使用します：

```
imagebuilder
```

単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。

```
"Action": [
	"imagebuilder:action1",
	"imagebuilder:action2"
	]
```





Image Builder ID ベースのポリシーの例を見るには、[Image Builder のアイデンティティベースのポリシー](#security_iam_id-based-policy-examples)を参照してください。

## Image Builder ポリシーリソース
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

```
"Resource": "*"
```

Image Builder のリソースタイプとその ARN の一覧は、Service Authorization Reference の [Resources defined by EC2 Image Builder](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-resources-for-iam-policies) を参照してください。各リソースの ARN をどのアクションで指定できるかについては、[EC2 Image Builder で定義されているアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)を参照してください。

Image Builder ID ベースのポリシーの例を見るには、[Image Builder のアイデンティティベースのポリシー](#security_iam_id-based-policy-examples)を参照してください。

## Image Builder のポリシー条件キー
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`Condition` 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、*「IAM ユーザーガイド*」の[AWS 「グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

Image Builder の条件キーの一覧は、*Service Authorization Reference* の [Condition keys for EC2 Image Builder](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-policy-keys) を参照してください。どのアクションとリソースで条件キーを使用できるかについては、[EC2 Image Builder で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2imagebuilder.html#amazonec2imagebuilder-actions-as-permissions)を参照してください。

Image Builder ID ベースのポリシーの例を見るには、[Image Builder のアイデンティティベースのポリシー](#security_iam_id-based-policy-examples)を参照してください。

## Image Builder の ACL
<a name="security_iam_service-with-iam-acls"></a>

**ACL のサポート:** なし 

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするためのアクセス許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

## Image Builder 付き
<a name="security_iam_service-with-iam-tags"></a>

**ABAC (ポリシー内のタグ) のサポート:** 一部

属性ベースのアクセスコントロール (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグをアタッチし、プリンシパルのタグがリソースのタグと一致するときにオペレーションを許可するように ABAC ポリシーを設計できます。

タグに基づいてアクセスを管理するには、`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

ABAC の詳細については、「*IAM ユーザーガイド*」の「[ABAC 認可でアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「*IAM ユーザーガイド*」の「[属性ベースのアクセスコントロール (ABAC) を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)」を参照してください。

## Image Builder での一時的な認証情報の使用
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**一時的な認証情報のサポート:** あり

一時的な認証情報は AWS 、リソースへの短期的なアクセスを提供し、フェデレーションまたはスイッチロールの使用時に自動的に作成されます。長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成 AWS することをお勧めします。詳細については、「*IAM ユーザーガイド*」の「[IAM の一時的な認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」および「[AWS のサービス と IAM との連携](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Image Builder のクロスサービスプリンシパル権限
<a name="security_iam_service-with-iam-principal-permissions"></a>

**転送アクセスセッション (FAS) のサポート:** あり

 転送アクセスセッション (FAS) は、 を呼び出すプリンシパルのアクセス許可と AWS のサービス、ダウンストリームサービス AWS のサービス へのリクエストをリクエストする を使用します。FAS リクエストを行う際のポリシーの詳細については、「[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。

## Image Builder のサービスリンクロール
<a name="security_iam_service-with-iam-roles-service"></a>

**サービスロールのサポート:** あり

 サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイド**の [AWS のサービスに許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

**警告**  
サービスロールの権限を変更すると、Image Builder の機能が壊れる可能性があります。サービスロールの編集は、Image Builder のガイダンスに従って行ってください。

## Image Builder のサービスリンクロール
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**サービスリンクロールのサポート:** あり

 サービスにリンクされたロールは、 にリンクされたサービスロールの一種です AWS のサービス。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは に表示され AWS アカウント 、サービスによって所有されます。IAM 管理者は、サービスリンクロールのアクセス許可を表示できますが、編集することはできません。

Image Builder サービスリンクロールの詳細については、[Image Builder での IAM サービスリンクロールの使用](image-builder-service-linked-role.md) を参照してください。

## Image Builder のアイデンティティベースのポリシー
<a name="security_iam_id-based-policy-examples"></a>

IAM アイデンティティベースポリシーでは、許可または拒否されるアクションとリソースを指定し、アクションが許可または拒否される条件も指定できます。Image Builder は、特定のアクション、リソース、条件キーをサポートしています。JSON ポリシーで使用するすべての要素については、*IAM ユーザーガイドの*「[Amazon EC2 Image Builder のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2imagebuilder.html)」を参照してください。

### アクション
<a name="sec-iam-ib-id-based-policies-actions"></a>

Image Builder のポリシーアクションは、アクションの前に以下の接頭辞を使用します： `imagebuilder:`。ポリシーステートメントには`Action` または `NotAction` 要素を含める必要があります。Image Builder は、このサービスで実行できるタスクを記述した独自のアクションセットを定義しています。

単一のステートメントに複数のアクションを指定するには次のようにコンマで区切ります。

```
"Action": [
	"imagebuilder:action1",
	"imagebuilder:action2"
]
```

ワイルドカード (\$1) を使用して複数アクションを指定できます。例えば、`List` という単語で始まるすべてのアクションを指定するには次のアクションを含めます。

```
"Action": "imagebuilder:List*"
```

Image Builder のアクションのリストは、IAM ユーザーガイドの [AWS のサービスのアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)を参照してください。

### ポリシーを使用したアクセスの管理
<a name="security-iam-manage-access"></a>

ポリシーを作成し、IAM ID または AWS リソースにアタッチ AWS して でアクセスを管理する方法の詳細については、*IAM ユーザーガイド*の[「ポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)」を参照してください。

インスタンスプロファイルに関連付ける IAM ロールには、イメージに含まれるビルドコンポーネントとテストコンポーネントを実行する権限が必要です。インスタンスプロファイルに関連付けられている IAM ロールに対し、次の IAM ロールポリシーをアタッチする必要があります。
+ EC2InstanceProfileForImageBuilder
+ EC2InstanceProfileForImageBuilderECRContainerBuilds
+ AmazonSSMManagedInstanceCore

### リソース
<a name="sec-iam-ib-id-based-policies-resources"></a>

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

```
"Resource": "*"
```

ARN は、リソースを識別し、名前が一意であることを確認するのに役立つ複数のノードで構成されます。名前の最後のノードには、リソースタイプ、名前、および ID の書式設定のいくつかのバリエーションが含まれます。Image Builder がリソースを作成するときは、次の形式を使用します。

`arn:aws:imagebuilder:region:owner:resource-type/resource-name/version/build-version`

**注記**  
ビルドバージョンは、必ずしもリソース ARN に含まれているわけではありません。ただし、[GetComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_GetComponent.html) などの一部の API オペレーションでは、取得するリソースを一意に識別するためにビルドバージョンが必要です。

ベースイメージやコンポーネントなど、Image Builder がレシピで使用するリソースの場合、所有者ノードは次のいずれかになります。
+ リソース所有者のアカウント番号
+ Amazon マネージドリソースの場合: `aws`
+  AWS Marketplace リソースの場合: `aws-marketplace`

次の例は、Linux に Amazon CloudWatch エージェントをインストールするためのマネージドコンポーネントの ARN を示しています。

```
arn:aws:imagebuilder:us-east-1:aws:component/amazon-cloudwatch-agent-linux/1.0.1/1
```

この例では、 からの架空のマネージドコンポーネントの ARN を示しています AWS Marketplace。

```
arn:aws:imagebuilder:us-east-1:aws-marketplace:component/example-linux-software-component/1.0.1
```

所有権フィルターの使用など、コンポーネントのリストを取得する方法の詳細については、「」を参照してください[Image Builder コンポーネントの一覧表示](component-details.md#list-components)。

**ARN の例**  
以下は、IAM ポリシーで指定できるリソース ARNs の例です。
+ インスタンス ARN

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:111122223333:instance/i-1234567890abcdef0"
  ```
+ 特定のアカウントのすべてのインスタンスを指定するワイルドカード (\$1) の例

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:111122223333:instance/*"
  ```
+ マネージドイメージワークフローのすべてのバージョンを指定するワイルドカード (\$1) の例

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:workflow/build/build-image/*"
  ```
+ マネージドイメージ ARN

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2-arm64/2024.12.17/1"
  ```
+ マネージドイメージのすべてのバージョンを指定するワイルドカード (\$1) の例

  ```
  "Resource": "arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2-arm64/x.x.x"
  ```

EC2 Image Builder API アクションの多くは、複数のリソースを使用します。複数リソースを単一ステートメントで指定するには、ARN をカンマで区切ります。

```
"Resource": [
	  "resource1",
	  "resource2"
]
```

### 条件キー
<a name="sec-iam-ib-id-based-policies-conditionkeys"></a>

Image Builder はサービス固有の条件キーを提供し、いくつかのグローバル条件キーの使用をサポートします。すべての AWS グローバル条件キーを確認するには、*IAM ユーザーガイド*の[AWS 「グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。以下のサービス別条件キーがある。

#### imagebuilder:CreatedResourceTagKeys
<a name="image-builder-security-createdresourcetagkeys"></a>

[文字列演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)で動作します。

リクエストにタグキーがあるかどうかでアクセスをフィルタするには、このキーを使用します。これにより、Image Builder が作成するリソースを管理できます。

**利用可能性** - このキーは`CreateInfrastrucutreConfiguration`と`UpdateInfrastructureConfiguration`の API でのみ利用可能です。

#### imagebuilder:CreatedResourceTag/<key>
<a name="image-builder-security-createdresourcetag"></a>

[文字列演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)で動作します。

このキーを使用して、Image Builder が作成したリソースに添付されているタグのキーと値のペアでアクセスをフィルタリングします。これにより、定義済みのタグを使用して Image Builder リソースを管理できます。

**利用可能性** - このキーは`CreateInfrastrucutreConfiguration`と`UpdateInfrastructureConfiguration`の API でのみ利用可能です。

#### imagebuilder:LifecyclePolicyResourceType
<a name="image-builder-security-lifecyclepolicyresourcetype"></a>

[文字列演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)で動作します。

このキーを使用して、リクエストで指定されたライフサイクルリソースタイプでアクセスをフィルタリングします。

このキーの値は、 `AMI_IMAGE`または のいずれかです`CONTAINER_IMAGE`。

**利用可能性** - このキーは`CreateLifecyclePolicy`と`UpdateLifecyclePolicy`の API でのみ利用可能です。

#### imagebuilder:Ec2MetadataHttpTokens
<a name="image-builder-security-ec2metadatatokens"></a>

[文字列演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)で動作します。

このキーを使用して、リクエストで指定された EC2 インスタンスメタデータの HTTP トークン要件によってアクセスをフィルタリングします。

このキーの値は`optional`か`required`のどちらかなります。

**利用可能性** - このキーは`CreateInfrastrucutreConfiguration`と`UpdateInfrastructureConfiguration`の API でのみ利用可能です。

#### imagebuilder:StatusTopicArn
<a name="image-builder-security-statustopicarn"></a>

[文字列演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)で動作します。

このキーを使用して、端末の状態通知を公開するリクエストで、SNS トピック ARN によるアクセスをフィルタリングします。

**利用可能性** - このキーは`CreateInfrastrucutreConfiguration`と`UpdateInfrastructureConfiguration`の API でのみ利用可能です。

### 例
<a name="sec-iam-ib-id-based-policies-examples"></a>



Image Builder ID ベースのポリシーの例を見るには、[Image Builder のアイデンティティベースのポリシー](security-iam-identity-based-policies.md)を参照してください。

## Image Builder 内のリソースベースのポリシー
<a name="security-iam-service-with-ib-resource-based-policies"></a>

リソースベースのポリシーは、指定されたプリンシパルが Image Builder リソースに対して、どのようなアクションをどのような条件で実行できるかを指定するものです。Image Builder は、コンポーネント、イメージ、およびイメージレシピのリソースベースのアクセス権限ポリシーをサポートします。リソースベースのポリシーでは、リソースごとに他の アカウントに使用許可を付与することができます。リソースベースのポリシーを使用して、 AWS サービスがコンポーネント、イメージ、イメージレシピにアクセスすることを許可することもできます。

リソースベースのポリシーをコンポーネント、イメージ、またはイメージレシピにアタッチする方法については、「[Image Builder リソースを と共有する AWS RAM](manage-shared-resources.md)」を参照してください。

**注記**  
Image Builder を使用してリソースポリシーを更新すると、更新は RAM コンソールに表示されます。

## Image Builder タグに基づく認可
<a name="security-iam-service-with-ib-tags"></a>

タグを Image Builder リソースに添付したり、リクエストでタグを Image Builder に渡すことができます。タグに基づいてアクセスを管理するには、`imagebuilder:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。Image Builder リソースのタグ付けの詳細については、[からリソースにタグを付ける AWS CLI](tag-resources.md#cli-tag-resource)を参照してください。

## Image Builder IAM ロール
<a name="security-iam-service-with-ib-roles"></a>

[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)は、特定のアクセス許可 AWS アカウント を持つ 内のエンティティです。

### Image Builder での一時的な認証情報の使用
<a name="security-iam-service-with-ib-roles-tempcreds"></a>

一時的な認証情報を使用して、フェデレーションでサインインする、IAM 役割を引き受ける、またはクロスアカウント役割を引き受けることができます。一時的なセキュリティ認証情報を取得するには、[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) や [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) などの AWS STS API オペレーションを呼び出します。

### サービスリンクロール
<a name="sec-iam-ib-service-linked-roles"></a>

[サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用すると AWS のサービス 、 は他の サービスのリソースにアクセスして、ユーザーに代わってアクションを実行できます。サービスリンクロールは IAM アカウント内に表示され、サービスによって所有されます。管理者権限を持つユーザーは、サービスリンクロールの権限を表示することはできますが、編集することはできません。

Image Builder はサービスリンクロールをサポートします。Image Builder サービスリンクロールの作成または管理については、[Image Builder での IAM サービスリンクロールの使用](image-builder-service-linked-role.md)を参照してください。

### サービス役割
<a name="sec-iam-ib-service-roles"></a>

この機能により、ユーザーに代わってサービスが[サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)を引き受けることが許可されます。この役割により、サービスがお客様に代わって他のサービスのリソースにアクセスし、アクションを完了することが許可されます。サービスロールはIAM アカウントに表示され、アカウントによって所有されます。これは、管理者権限を持つユーザーがこのロールの権限を変更できることを意味します。ただし、それにより、サービスの機能が損なわれる場合があります。

# Image Builder で S3 バケットダウンロードアクセスのデータ境界を管理する
<a name="security-iam-data-perimeter"></a>

EC2 Image Builder は、アカウントで Image Builder ワークロードを実行するために必要なダウンロード可能なリソースを含む AWS サービス所有の S3 バケットの 2 つのクラスを維持します。データ境界を使用して環境内の Amazon S3 へのアクセスを制御する場合は、これらのバケットへのアクセスを明示的に許可する必要がある場合があります。これらのバケットを許可リストに登録するには、Amazon S3 へのアクセス制御の方法に応じて、バケット ARN またはバケット URL を使用します。

**コンポーネント管理ブートストラップスクリプト (必須)**  
この S3 バケットには、イメージの作成に使用される EC2 インスタンスで AWSTOE アプリケーションをセットアップするためのブートストラップスクリプトが含まれています。Image Builder では、新しいイメージのビルドとテストをサポートするために、スクリプトをダウンロードするためのアクセスが必要です。  
+ **S3 バケット ARN:** `arn:<AWS partition>:s3:::ec2imagebuilder-managed-resources-<AWS Region>-prod`
+ **S3 バケット URL:** `https://ec2imagebuilder-managed-resources-<AWS Region>.s3.<AWS Region>.<AWS partition-specific domain name>`

**マネージドコンポーネント**  
この S3 バケットには、Amazon マネージドコンポーネントのパッケージペイロードが含まれています。Image Builder には、レシピで設定されているマネージドコンポーネントをダウンロードするためのアクセスが必要です。  
+ **S3 バケット ARN:** `arn:<AWS partition>:s3:::ec2imagebuilder-toe-<AWS Region>-prod`
+ **S3 バケット URL:** `https://ec2imagebuilder-toe-<AWS Region>.s3.<AWS Region>.<AWS partition-specific domain name>`

# Image Builder のアイデンティティベースのポリシー
<a name="security-iam-identity-based-policies"></a>

**Topics**
+ [アイデンティティベースポリシーのベストプラクティス](#security-iam-service-policy-best-practices)
+ [Image Builder コンソールの使用](#sec-iam-id-based-policies-using-console)

## アイデンティティベースポリシーのベストプラクティス
<a name="security-iam-service-policy-best-practices"></a>

アイデンティティベースのポリシーは、アカウント内の Image Builder リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションでは、 AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
+ ** AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する** – ユーザーとワークロードにアクセス許可の付与を開始するには、多くの一般的なユースケースにアクセス許可を付与する*AWS 管理ポリシー*を使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義することで、アクセス許可をさらに減らすことをお勧めします。詳細については、*IAM ユーザーガイド* の [AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) または [ジョブ機能のAWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) を参照してください。
+ **最小特権を適用する** – IAM ポリシーでアクセス許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、*IAM ユーザーガイド* の [IAM でのポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) を参照してください。
+ **IAM ポリシーで条件を使用してアクセスをさらに制限する** - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。たとえば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、サービスアクションが などの特定の を通じて使用されている場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます CloudFormation。詳細については、*IAM ユーザーガイド* の [IAM JSON ポリシー要素:条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) を参照してください。
+ **IAM アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、*IAM ユーザーガイド* の [IAM Access Analyzer でポリシーを検証する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) を参照してください。
+ **多要素認証 (MFA) を要求する** – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、MFA をオンにしてセキュリティを強化します。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、*IAM ユーザーガイド* の [MFA を使用した安全な API アクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) を参照してください。

IAM でのベストプラクティスの詳細については、*IAM ユーザーガイド* の [IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) を参照してください。

## Image Builder コンソールの使用
<a name="sec-iam-id-based-policies-using-console"></a>

EC2 Image Builder のコンソールにアクセスするには、最低限の権限が必要です。これらの権限により、 AWS アカウントにある Image Builder リソースの一覧を表示し、詳細を確認することができます。最小限必要な許可よりも厳しく制限されたアイデンティティベースポリシーを作成すると、そのポリシーを添付したエンティティ (IAM ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

IAM エンティティが Image Builder コンソールを使用できるようにするには、次のいずれかの管理 AWS ポリシーをアタッチする必要があります。
+ [AWSImageBuilderReadOnlyAccess ポリシー](security-iam-awsmanpol.md#sec-iam-manpol-AWSImageBuilderReadOnlyAccess)
+ [AWSImageBuilderFullAccess ポリシー](security-iam-awsmanpol.md#sec-iam-manpol-AWSImageBuilderFullAccess)

Image Builder のマネージドポリシーの詳細については、[EC2 Image Builder の AWS マネージドポリシーを使用する](security-iam-awsmanpol.md) を参照してください。

**重要**  
Image Builder サービスリンクロールを作成するには、**AWSImageBuilderFullAccess**ポリシーが必要です。このポリシーを IAM エンティティにアタッチするときは、以下のカスタムポリシーもアタッチする必要があります。また、使用したくて、リソース名には `imagebuilder` が含まれていないリソースを含める必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "arn:aws:sns:*:*:*imagebuilder*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetInstanceProfile"
            ],
            "Resource": "arn:aws:iam::*:instance-profile/*imagebuilder*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::*:instance-profile/*imagebuilder*",
                "arn:aws:iam::*:role/*imagebuilder*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3::*:*imagebuilder*"
        }
    ]
}
```

------

 AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

## カスタムワークフローの IAM アクセス許可
<a name="security-iam-custom-workflows"></a>

などの特定のステップアクションでカスタムワークフローを使用する場合[RegisterImage](wfdoc-step-actions.md#wfdoc-step-action-register-image)、標準の Image Builder 管理ポリシーを超えて追加の IAM アクセス許可が必要になる場合があります。このセクションでは、カスタムワークフローステップアクションに必要な追加のアクセス許可について説明します。

### RegisterImage ステップアクションのアクセス許可
<a name="security-iam-registerimage-permissions"></a>

`RegisterImage` ステップアクションには、AMIsし、オプションでスナップショットタグを取得するための特定の Amazon EC2 アクセス許可が必要です。`includeSnapshotTags` パラメータを使用する場合は、スナップショットを記述するための追加のアクセス許可が必要です。

**RegisterImage ステップアクションに必要なアクセス許可:**

すべてのリソースで、次のアクションを許可します。
+ `ec2:RegisterImage`
+ `ec2:DescribeSnapshots`

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:RegisterImage",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "RegisterImage"
                }
            }
        }
    ]
}
```

**アクセス許可の詳細:**
+ `ec2:RegisterImage` - スナップショットから新しい AMIs を登録するために必要です
+ `ec2:DescribeSnapshots` - `includeSnapshotTags: true`を使用して AMI タグとマージするためのスナップショットタグを取得する場合に必要です
+ `ec2:CreateTags` - Image Builder のデフォルトタグとマージされたスナップショットタグの両方を含む、登録された AMI にタグを適用するために必要です

**注記**  
アクセス`ec2:DescribeSnapshots`許可は、 `includeSnapshotTags`パラメータが に設定されている場合にのみ使用されます`true`。この機能を使用しない場合は、このアクセス許可を省略できます。

**タグマージ動作:**

`includeSnapshotTags` を有効にすると、RegisterImage ステップアクションは次のようになります。
+ ブロックデバイスマッピングで指定された最初のスナップショットからタグを取得する
+  AWS 予約済みタグ (「aws:」で始まるキーを持つタグ) を除外する
+ スナップショットタグを Image Builder のデフォルトの AMI 登録タグとマージする
+ タグキーの競合時に Image Builder タグを優先する

## Image Builder 内のリソースベースのポリシー
<a name="security-iam-resource-based-policies"></a>

コンポーネントの作成方法については、[コンポーネントを使用した Image Builder イメージのカスタマイズ](manage-components.md)を参照してください。

### Image Builder コンポーネントへのアクセスを特定の IP アドレスに制限する
<a name="sec-iam-resourcepol-restrict-component-by-ip"></a>

以下の例では、コンポーネントに対して Image Builder 操作を実行する権限を任意のユーザーに付与しています。ただし、リクエストは条件で指定された IP アドレス範囲からのリクエストである必要があります。

このステートメントの条件では、54.240.143.\$1 の範囲のインターネットプロトコルバージョン 4 (IPv4) IP アドレスが許可されています。ただし、54.240.143.188 を除きます。

`Condition` ブロックは、 `IpAddress` `NotIpAddress`条件と `aws:SourceIp`条件キーを使用します。これは、 AWS全体の条件キーです。これらの条件キーの詳細については、「[ポリシーでの条件の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html)」を参照してください。`aws:sourceIp`IPv4 値は標準の CIDR 表記を使用します。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)の *IP アドレス条件演算子* を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "IBPolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Action": "imagebuilder:GetComponent",
      "Resource": "arn:aws:imagebuilder:*::examplecomponent/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
         "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
      } 
    } 
  ]
}
```

------

# EC2 Image Builder の AWS マネージドポリシーを使用する
<a name="security-iam-awsmanpol"></a>

 AWS 管理ポリシーは、 によって作成および管理されるスタンドアロンポリシーです AWS。 AWS 管理ポリシーは、ユーザー、グループ、ロールにアクセス許可の割り当てを開始できるように、多くの一般的なユースケースにアクセス許可を提供するように設計されています。

 AWS 管理ポリシーは、すべての AWS お客様が使用できるため、特定のユースケースに対して最小特権のアクセス許可を付与しない場合があることに注意してください。ユースケースに固有の[カスタマー管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)を定義して、アクセス許可を絞り込むことをお勧めします。

 AWS 管理ポリシーで定義されているアクセス許可は変更できません。が AWS マネージドポリシーで定義されたアクセス許可 AWS を更新すると、ポリシーがアタッチされているすべてのプリンシパル ID (ユーザー、グループ、ロール) に影響します。 AWS は、新しい が起動されるか、新しい API オペレーション AWS のサービス が既存のサービスで使用できるようになったときに、 AWS マネージドポリシーを更新する可能性が最も高くなります。

詳細については、「**IAM ユーザーガイド」の「[AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

## AWSImageBuilderFullAccess ポリシー
<a name="sec-iam-manpol-AWSImageBuilderFullAccess"></a>

この **AWSImageBuilderFullAccess** ポリシーは、アタッチされているロールの Image Builder リソースへのフルアクセスを許可し、ロールが Image Builder リソースを一覧表示、説明、作成、更新、削除できるようにします。このポリシーは、リソースの検証や、 のアカウントの現在のリソースの表示など、 AWS のサービス 必要な関連 にターゲットを絞ったアクセス許可も付与します AWS マネジメントコンソール。

### アクセス許可の詳細
<a name="sec-iam-manpol-AWSImageBuilderFullAccess-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **Image Builder** — ロールが Image Builder リソースを一覧表示、説明、作成、更新、削除できるように、管理者権限が付与されます。
+ **Amazon EC2** — リソースの存在を確認したり、アカウントに属するリソースのリストを取得したりするために必要な Amazon EC2 Describe アクションへのアクセスが許可されます。
+ **IAM** — 名前に「imagebuilder」が含まれるインスタンスプロファイルの取得と使用、`iam:GetRole` API アクションによる Image Builder サービスリンクロールの存在の確認、および Image Builder サービスリンクロールの作成を行うためのアクセス権が付与されます。
+ **License Manager** — リソースのライセンス構成またはライセンスを一覧表示するためのアクセス権が付与されます。
+ **Amazon S3** — アカウントに属するバケットと、名前に「imagebuilder」が含まれる Image Builder バケットを一覧表示するためのアクセスが許可されます。
+ **Amazon SNS** —「imagebuilder」を含むトピックの所有権を確認するための書き込み権限が Amazon SNS に付与されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderFullAccess.html)」を参照してください。

## AWSImageBuilderReadOnlyAccess ポリシー
<a name="sec-iam-manpol-AWSImageBuilderReadOnlyAccess"></a>

この **AWSImageBuilderReadOnlyAccess** ポリシーは、Image Builder のすべてのリソースへの読み取り専用アクセスを提供します。`iam:GetRole` API アクションにより、Image Builder サービスリンクロールが存在することを確認する権限が付与されます。

### アクセス許可の詳細
<a name="sec-iam-manpol-AWSImageBuilderReadOnlyAccess-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **Image Builder** — Image Builder リソースへの読み取り専用アクセスに対してアクセスが許可されます。
+ **IAM** — `iam:GetRole` API アクションにより、Image Builder サービスリンクロールの存在を確認するためのアクセス権限が付与されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSImageBuilderReadOnlyAccess.html)」を参照してください。

## AWSServiceRoleForImageBuilder ポリシー
<a name="sec-iam-manpol-AWSServiceRoleForImageBuilder"></a>

この**AWSServiceRoleForImageBuilder**ポリシーにより、Image Builder AWS のサービス はユーザーに代わって を呼び出すことができます。

### アクセス許可の詳細
<a name="sec-iam-manpol-AWSServiceRoleForImageBuilder-details"></a>

このポリシーは、ロールが Systems Manager で作成されたときに、Image Builder サービスリンクロールにアタッチされます。Image Builder サービスリンクロールの詳細については、[Image Builder での IAM サービスリンクロールの使用](image-builder-service-linked-role.md)を参照してください。

ポリシーには以下のアクセス権限が含まれています。
+ **CloudWatch Logs** — 名前が `/aws/imagebuilder/` で始まる任意のロググループに CloudWatch Logs を作成してアップロードするためのアクセス権が付与されます。
+ **Amazon EC2** – Image Builder には、アカウントで EC2 インスタンスを作成および起動するイメージ (AMIs) を作成、スナップショット作成、登録するためのアクセス権が付与されます。Image Builder は、作成または使用されているイメージ、インスタンス、ボリュームが `CreatedBy: EC2 Image Builder`または でタグ付けされている限り、必要に応じて関連するスナップショット、ボリューム、ネットワークインターフェイス、サブネット、セキュリティグループ、ライセンス設定、キーペアを使用します`CreatedBy: EC2 Fast Launch`。

  Image Builder は、Amazon EC2 イメージ、インスタンス属性、インスタンスステータス、アカウントで使用できるインスタンスタイプ、起動テンプレート、サブネット、ホスト、Amazon EC2 リソースのタグに関する情報を取得できます。

  Image Builder はイメージ設定を更新して、イメージに `CreatedBy: EC2 Image Builder` のタグが付けられているアカウント内の Windows インスタンスの高速起動を有効または無効にすることができます。

  さらに、Image Builder では、アカウントで実行されているインスタンスの起動、停止、終了、Amazon EBS スナップショットの共有、イメージの作成と更新、テンプレートの起動、既存のイメージの登録解除、タグの追加、**Ec2ImageBuilderCrossAccountDistributionAccess** ポリシーによってアクセス権限を付与したアカウント間でのイメージの複製を行うことができます。前述のように、これらすべてのアクションには Image Builder のタグ付けが必要です。
+ **Amazon ECR** — Image Builder には、コンテナイメージの脆弱性スキャンに必要なリポジトリを作成し、作成したリソースにタグを付けて操作の範囲を制限するためのアクセス権限が付与されます。また、Image Builder が脆弱性のスナップショットを取得した後、スキャンのために作成したコンテナイメージを削除するためのアクセス権も付与されます。
+ **EventBridge** — Image Builder に EventBridge ルールを作成および管理するためのアクセス権限が付与されます。
+ **IAM** — Image Builder には、アカウント内の任意のロールを Amazon EC2 と VM Import/Export に渡すためのアクセス権限が付与されます。
+ **Amazon Inspector** — Image Builder には、Amazon Inspector がビルドインスタンスのスキャンをいつ完了するかを決定し、それを許可するように設定されたイメージの結果を収集するためのアクセス権限が付与されます。
+ **AWS KMS** — Amazon EBS には Amazon EBS ボリュームを暗号化、復号化、または再暗号化するためのアクセス権限が付与されます。これは、Image Builder がイメージをビルドするときに暗号化されたボリュームが確実に機能するようにするために重要です。
+ **License Manager** — Image Builder には、`license-manager:UpdateLicenseSpecificationsForResource` を介して License Manager の仕様を更新するためのアクセス権が付与されます。
+ **Amazon SNS** — アカウント内のすべての Amazon SNS トピックに書き込み権限が付与されます。
+ **Systems Manager** - Image Builder には、Systems Manager のコマンドとその呼び出しの一覧の取得、インベントリエントリの一覧の取得、インスタンス情報とオートメーションの実行ステータスの記述、インスタンス配置のサポートに必要なホストの記述、およびコマンド呼び出しの詳細の取得を行うためのアクセス権限が付与されます。Image Builder は自動化シグナルを送信し、アカウント内の任意のリソースの自動化実行を停止することもできます。

  Image Builder は、`AWS-RunPowerShellScript`、`AWS-RunShellScript`、または `AWSEC2-RunSysprep` のスクリプトファイルについて、`"CreatedBy": "EC2 Image Builder"` のタグが付けられたインスタンスに対して実行コマンドを発行することができます。Image Builder では、名前が `ImageBuilder` で始まる自動化ドキュメントの Systems Manager 自動化実行をアカウント内で開始できます。

  Image Builder では、関連付けドキュメントが `AWS-GatherSoftwareInventory` である限り、アカウント内の任意のインスタンスの State Manager 関連付けを作成または削除したり、アカウントに Systems Manager サービスリンクロールを作成したりすることもできます。

  Image Builder は、パブリックパラメータストアパラメータを読み取り、プレフィックスが のプライベートパラメータを読み取りおよび更新できるため、Image Builder が新しいビルドから作成する出力 AMI IDs でパラメータ値を更新`/imagebuilder/`できます。
+ **AWS STS** — Image Builder には、ロールの信頼ポリシーで許可されている任意のアカウントに、アカウントから指定された **EC2ImageBuilderDistributionCrossAccountRole** ロールを引き継ぐためのアクセス権限が付与されます。これは、クロスアカウントのイメージ配信に使用されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForImageBuilder.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSServiceRoleForImageBuilder.html)」を参照してください。

## Ec2ImageBuilderCrossAccountDistributionAccess ポリシー
<a name="sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess"></a>

**Ec2ImageBuilderCrossAccountDistributionAccess** ポリシーは、Image Builder がターゲットリージョンのアカウントにイメージを配信する権限を付与します。さらに、Image Builder はアカウント内の任意の Amazon EC2 イメージにタグを記述、コピー、および適用できます。このポリシーでは、`ec2:ModifyImageAttribute` API アクションを使用して AMI の権限を変更する機能も付与されます。

### アクセス許可の詳細
<a name="sec-iam-manpol-Ec2ImageBuilderCrossAccountDistributionAccess-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **Amazon EC2** — Amazon EC2 には、イメージの属性を記述、コピー、変更したり、アカウント内の任意の Amazon EC2 イメージのタグを作成したりするためのアクセス権限が付与されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2ImageBuilderCrossAccountDistributionAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2ImageBuilderCrossAccountDistributionAccess.html)」を参照してください。

## EC2ImageBuilderLifecycleExecutionPolicy ポリシー
<a name="sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy"></a>

**EC2ImageBuilderLifecycleExecutionPolicy** ポリシーは、イメージライフサイクル管理タスクの自動ルールをサポートするために、Image Builder イメージリソースとその基盤となるリソース (AMI、スナップショット) の非推奨、無効化、削除などのアクションを実行する権限を Image Builder に付与します。

### アクセス許可の詳細
<a name="sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **Amazon EC2** – Amazon EC2 には、`CreatedBy: EC2 Image Builder` のタグが付けられたアカウントの Amazon マシンイメージ (AMI) に対して以下のアクションを実行するためのアクセス権限が付与されます。
  + AMI を有効化および無効化する。
  + イメージ廃止を有効化および無効化する。
  + AMI の記述と登録解除をする。
  + AMI イメージ属性を記述および変更する。
  + AMI に関連付けられているボリュームスナップショットを削除する。
  + リソースのタグを取得する。
  + AMI のタグを追加または削除して廃止する。
+ **Amazon ECR** – Amazon ECR には、`LifecycleExecutionAccess: EC2 Image Builder` タグ付きの ECR リポジトリに対して以下のバッチアクションを実行するためのアクセス権限が付与されます。バッチアクションは、自動コンテナイメージライフサイクルルールをサポートします。
  + `ecr:BatchGetImage`
  + `ecr:BatchDeleteImage`

  `LifecycleExecutionAccess: EC2 Image Builder` のタグが付けられた ECR リポジトリには、リポジトリレベルでアクセス権限が付与されます。
+ **AWS リソースグループ** – Image Builder がタグに基づいてリソースを取得するためのアクセス許可が付与されます。
+ **EC2 Image Builder** – Image Builder には、Image Builder イメージリソースを削除するためのアクセス権限が付与されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2ImageBuilderLifecycleExecutionPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2ImageBuilderLifecycleExecutionPolicy.html)」を参照してください。

## EC2InstanceProfileForImageBuilder ポリシー
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilder"></a>

この **EC2InstanceProfileForImageBuilder** ポリシーは、EC2 インスタンスが Image Builder と連携するために必要な最小限のアクセス権限を付与します。これには、Systems Manager エージェントを使用するために必要な権限は含まれていません。

### アクセス許可の詳細
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilder-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **CloudWatch Logs** — 名前が `/aws/imagebuilder/` で始まる任意のロググループに CloudWatch Logs を作成してアップロードするためのアクセス権が付与されます。
+ **Amazon EC2** – ボリュームとスナップショットを記述し、Image Builder が作成したボリュームまたはスナップショットリソースのスナップショットを作成し、Image Builder リソースのタグを作成するためのアクセス権が付与されます。
+ **Image Builder** – Image Builder または AWS Marketplace コンポーネントを取得するためのアクセス権が付与されます。
+ **AWS KMS** – Image Builder コンポーネントが を介して暗号化されている場合、そのコンポーネントを復号するためのアクセス許可が付与されます AWS KMS。
+ **Amazon S3** – 名前が で始まる Amazon S3 バケットに保存されているオブジェクト`ec2imagebuilder-`、または ISO ファイル拡張子を持つリソースを取得するためのアクセス許可が付与されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilder.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilder.html)」を参照してください。

## EC2InstanceProfileForImageBuilderECRContainerBuilds ポリシー
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilderECRContainerBuilds"></a>

この **EC2InstanceProfileForImageBuilderECRContainerBuilds** ポリシーは、Image Builder を使用して Docker イメージを構築し、そのイメージを Amazon ECR コンテナリポジトリに登録して保存する場合に、EC2 インスタンスに必要な最小限のアクセス権限を付与します。これには、Systems Manager エージェントを使用するために必要な権限は含まれていません。

### アクセス許可の詳細
<a name="sec-iam-manpol-EC2InstanceProfileForImageBuilderECRContainerBuilds-details"></a>

このポリシーには、以下のアクセス許可が含まれています。
+ **CloudWatch Logs** — 名前が `/aws/imagebuilder/` で始まる任意のロググループに CloudWatch Logs を作成してアップロードするためのアクセス権が付与されます。
+ **Amazon ECR** - Amazon ECR には、コンテナイメージの取得、登録、保存、および認可トークンの取得を行うためのアクセス権限が付与されます。
+ **Image Builder** — Image Builder コンポーネントまたはコンテナレシピを取得するためのアクセス権が付与されます。
+ **AWS KMS** — Image Builder コンポーネントまたはコンテナレシピが を介して暗号化されている場合、復号するためのアクセス許可が付与されます AWS KMS。
+ **Amazon S3** — 名前が `ec2imagebuilder-` で始まる Amazon S3 バケットに保存されているオブジェクトを取得するためのアクセスが許可されます。

このポリシーのアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilderECRContainerBuilds.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceProfileForImageBuilderECRContainerBuilds.html)」を参照してください。

## Image Builder の AWS マネージドポリシーの更新
<a name="security-iam-awsmanpol-updates"></a>

このセクションでは、このサービスがこれらの変更の追跡を開始してからの Image Builder の AWS マネージドポリシーの更新に関する情報を提供します。このページの変更に関する自動通知については、[ ドキュメントの履歴ページ](doc-history.md)の RSS フィードをサブスクライブしてください。




| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) - 既存ポリシーへの更新  |  Image Builder は、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2026 年 2 月 26 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、レシピ内およびイメージ配布中の AWS Systems Manager (SSM) パラメータストアパラメータの使用をサポートするために、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2025 年 7 月 23 日 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、ISO ファイルのダウンロード用にさらに多くのファイル拡張子をサポートするために、インスタンスプロファイルポリシーに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2025 年 5 月 19 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、Microsoft クライアント OS ISO ファイルをベースイメージとしてインポートできるように、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2024 年 12 月 30 日 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、ディスクイメージファイルからのイメージ作成をサポートするために、インスタンスプロファイルポリシーに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2024 年 12 月 30 日 | 
|  [EC2InstanceProfileForImageBuilder](#sec-iam-manpol-EC2InstanceProfileForImageBuilder) - ポリシーを更新  |  Image Builder は、Image Builder が AWS Marketplace コンポーネントを取得できるように`EC2InstanceProfileForImageBuilder`ポリシーを更新しました。  | 2024 年 12 月 2 日 | 
|  [EC2ImageBuilderLifecycleExecutionPolicy](#sec-iam-manpol-EC2ImageBuilderLifecycleExecutionPolicy) - 新しいポリシー  |  Image Builder は、イメージライフサイクル管理の権限を含む新しい `EC2ImageBuilderLifecycleExecutionPolicy` ポリシーを追加しました。  | 2023 年 11 月 17 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder でインスタンス配置のサポートを提供するために、サービスロールに次の変更が加えられました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023 年 10 月 19 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder でインスタンス配置のサポートを提供するために、サービスロールに次の変更が加えられました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023 年 9 月 28 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder はサービスロールに以下の変更を加え、Image Builder ワークフローが AMI と ECR の両方のコンテナイメージビルドの脆弱性結果を収集できるようにしました。新しい権限は CVE 検出およびレポート機能をサポートします。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2023 年 3 月 30 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2022 年 3 月 22 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2022 年 2 月 21 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder は、サービスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2021 年 11 月 20 日 | 
|  [AWSServiceRoleForImageBuilder](#sec-iam-manpol-AWSServiceRoleForImageBuilder) – 既存ポリシーへの更新  |  Image Builder には、複数のインベントリ関連付けによってイメージビルドが停止する問題を修正する新しい権限が追加されました。  | 2021 年 8 月 11 日 | 
|  [AWSImageBuilderFullAccess](#sec-iam-manpol-AWSImageBuilderFullAccess) – 既存ポリシーへの更新  |  Image Builder は、フルアクセスロールに次の変更を加えました。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/security-iam-awsmanpol.html)  | 2021 年 4 月 13 日 | 
|  Image Builder が変更の追跡を開始しました  |  Image Builder は AWS 、管理ポリシーの変更の追跡を開始しました。  | 2021 年 4 月 02 日 | 

# Image Builder での IAM サービスリンクロールの使用
<a name="image-builder-service-linked-role"></a>

EC2 Image Builder は AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスリンクロールは、Image Builder に直接リンクされた独自のタイプの IAM ロールです。サービスにリンクされたロールは Image Builder によって事前定義されており、サービスが AWS のサービス ユーザーに代わって他の を呼び出すために必要なすべてのアクセス許可が含まれています。

サービスリンクロールは、必要なパーミッションを手動で追加する必要がないため、Image Builder のセットアップをより効率的にします。Image Builder は、サービスリンクロールの権限を定義し、他に定義されていない限り、Image Builder だけがそのロールを引き受けることができます。定義されたアクセス許可には、信頼ポリシーとアクセス許可ポリシーが含まれます。アクセス許可ポリシーを他の IAM エンティティにアタッチすることはできません。

サービスリンクロールをサポートする他のサービスについては、「[IAM と連携するAWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」の「**サービスにリンクされたロール**」列が「**はい**」になっているサービスを検索してください。サービスリンクロールに関するドキュメントをサービスで表示するには、リンクで **[はい]** を選択します。

## Image Builder のサービスリンクロールの権限
<a name="image-builder-slr-permissions"></a>

Image Builder は、**AWSServiceRoleForImageBuilder**サービスにリンクされたロールを使用して、EC2 Image Builder がユーザーに代わって AWS リソースにアクセスできるようにします。サービスリンクロールは、ロールを引き受ける上で imagebuilder.amazonaws.com サービスを信頼します。

サービスにリンクされたこのロールを手動で作成する必要はありません。 AWS マネジメントコンソール、、 AWS CLIまたは AWS API で最初の Image Builder イメージを作成すると、Image Builder によってサービスにリンクされたロールが作成されます。

次のアクションは新しいイメージを作成します。
+ Image Builder コンソールのパイプラインウィザードを実行して、カスタムイメージを作成します。
+ 次のいずれかの API アクション、または対応する AWS CLI コマンドを使用します。
  + **[CreateImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImage.html)** API アクション (**[create-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-image.html)** の AWS CLI)。
  + **[ImportVmImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_ImportVmImage.html)** API アクション (**[import-vm-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/import-vm-image.html)** の AWS CLI)。
  + **[StartImagePipelineExecution](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_StartImagePipelineExecution.html)** API アクション (**[start-image-pipeline-execution](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/start-image-pipeline-execution.html)** の AWS CLI)。

**重要**  
サービスリンクロールがアカウントから削除された場合、同じ手順で再度作成することができます。最初の EC2 Image Builder リソースを作成すると、Image Builder はサービスリンクロールを再度作成します。

**AWSServiceRoleForImageBuilder** の権限を確認するには、[AWSServiceRoleForImageBuilder ポリシー](security-iam-awsmanpol.md#sec-iam-manpol-AWSServiceRoleForImageBuilder) ページを参照してください。サービスリンクロールの権限の設定の詳細については、「*IAM ユーザーガイド*」の「[サービスリンクロールの権限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)」を参照してください。

## Image Builder サービスリンクロールをアカウントから削除します
<a name="image-builder-slr-deleting"></a>

IAM コンソール、、または AWS API を使用して AWS CLI、Image Builder のサービスにリンクされたロールをアカウントから手動で削除できます。ただし、その前に、それを参照する Image Builder リソースが有効になっていないことを確認する必要があります。

**注記**  
リソースを削除しようとしたときに Image Builder サービスがロールを使用している場合、削除に失敗することがあります。失敗した場合は数分待ってから操作を再試行してください。

**`AWSServiceRoleForImageBuilder` ロールが使用する Image Builder リソースをクリーンアップする**

1. 開始する前に、パイプラインビルドが実行されていないことを確認してください。実行中のビルドをキャンセルするには、 AWS CLIから `cancel-image-creation` コマンドを使用します。

   ```
   aws imagebuilder cancel-image-creation --image-build-version-arn arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/sample-pipeline
   ```

1. すべてのパイプラインスケジュールを手動ビルドプロセスを使用するように変更するか、今後使用しない場合は削除してください。リソースの削除については、[未使用または古くなった Image Builder リソースの削除](delete-resources.md)を参照してください。

**IAM を使用して、サービスリンクロールを削除する**  
IAM コンソール、 AWS CLI、または AWS API を使用して、アカウントから`AWSServiceRoleForImageBuilder`ロールを削除できます。詳細については、「*IAM ユーザーガイド*」の「[サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。

## Image Builder サービスリンクロールでサポートされるリージョン
<a name="image-builder-slr-regions"></a>

Image Builder は、サービスが利用可能なすべての AWS リージョンでサービスにリンクされたロールの使用をサポートしています。サポートされている AWS リージョンのリストについては、「」を参照してください[AWS リージョンとエンドポイント](what-is-image-builder.md#image-builder-regions)。

# Image Builder での IAM 問題のトラブルシューティング
<a name="security_iam_troubleshoot"></a>

**Topics**
+ [Image Builder でアクションを実行する権限がありません](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole を実行する権限がありません](#security_iam_troubleshoot-passrole)
+ [自分の 以外のユーザーに Image Builder リソース AWS アカウント へのアクセスを許可したい](#security_iam_troubleshoot-cross-account-access)

## Image Builder でアクションを実行する権限がありません
<a name="security_iam_troubleshoot-no-permissions"></a>

アクションを実行する権限がないというエラーが表示された場合は、そのアクションを実行できるようにポリシーを更新する必要があります。

次のエラー例は、`mateojackson` IAM ユーザーがコンソールを使用して、ある `my-example-widget` リソースに関する詳細情報を表示しようとしたことを想定して、その際に必要な `imagebuilder:GetWidget` アクセス許可を持っていない場合に発生するものです。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: imagebuilder:GetWidget on resource: my-example-widget
```

この場合、`imagebuilder:GetWidget` アクションを使用して `my-example-widget` リソースへのアクセスを許可するように、`mateojackson` ユーザーのポリシーを更新する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン認証情報を提供した担当者が管理者です。

## iam:PassRole を実行する権限がありません
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` のアクションを実行する権限がないというエラーが表示された場合、Image Builder にロールを渡せるようにポリシーを更新する必要があります。

一部の AWS のサービス では、新しいサービスロールまたはサービスにリンクされたロールを作成する代わりに、既存のロールをそのサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。

次の例のエラーは、`marymajor`という IAM ユーザーがコンソールを使用して Image Builder でアクションを実行しようとしたときに発生します。ただし、このアクションをサービスが実行するには、サービスロールから付与されたアクセス許可が必要です。Mary には、ロールをサービスに渡すアクセス許可がありません。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

この場合、Mary のポリシーを更新してメアリーに `iam:PassRole` アクションの実行を許可する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン資格情報を提供した担当者が管理者です。

## 自分の 以外のユーザーに Image Builder リソース AWS アカウント へのアクセスを許可したい
<a name="security_iam_troubleshoot-cross-account-access"></a>

他のアカウントのユーザーや組織外の人が、リソースにアクセスするために使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。

詳細については、以下を参照してください:
+ Image Builder がこれらの機能をサポートしているかどうかについては、[Image Builder と IAM ポリシーおよびロールとの連携](security_iam_service-with-iam.md)を参照してください。
+ 所有 AWS アカウント している のリソースへのアクセスを提供する方法については、IAM *ユーザーガイド*の[「所有 AWS アカウント している別の の IAM ユーザーへのアクセスを提供する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)」を参照してください。
+ リソースへのアクセスをサードパーティーに提供する方法については AWS アカウント、*IAM ユーザーガイド*の[「サードパーティー AWS アカウント が所有する へのアクセスを提供する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)」を参照してください。
+ ID フェデレーションを介してアクセスを提供する方法については、*IAM ユーザーガイド* の [外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) を参照してください。
+ クロスアカウントアクセスにおけるロールとリソースベースのポリシーの使用方法の違いについては、「*IAM ユーザーガイド*」の「[IAM でのクロスアカウントのリソースへのアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)」を参照してください。

# Image Builder のコンプライアンス検証
<a name="compliance"></a>

EC2 Image Builder は AWS コンプライアンスプログラムの対象ではありません。

 AWS のサービス が特定のコンプライアンスプログラムの対象であるかどうかを確認するには、[AWS のサービス 「コンプライアンスプログラムによる対象範囲内の](https://aws.amazon.com/compliance/services-in-scope/)コンプライアンス範囲内の」を参照し、関心のあるコンプライアンスプログラムを選択します。一般的な情報については、[AWS 「コンプライアンスプログラム](https://aws.amazon.com/compliance/programs/)」を参照してください。

を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細については、[「Downloading Reports in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)」を参照してください。

を使用する際のお客様のコンプライアンス責任 AWS のサービス は、お客様のデータの機密性、貴社のコンプライアンス目的、適用される法律および規制によって決まります。を使用する際のコンプライアンス責任の詳細については AWS のサービス、[AWS 「 セキュリティドキュメント](https://docs.aws.amazon.com/security/)」を参照してください。

 AWS Marketplace または AWS Task Orchestrator and Executor (AWSTOE) のコンポーネントからのコンプライアンス製品を Image Builder イメージに組み込むことで、イメージが準拠していることを確認できます。詳細については、「[Image Builder イメージ用のコンプライアンス製品](integ-compliance-products.md)」を参照してください。

# Image Builder のデータの冗長性と回復性
<a name="disaster-recovery-resiliency"></a>

 AWS グローバルインフラストラクチャは、 AWS リージョンとアベイラビリティーゾーンを中心に構築されています。 AWS リージョンは、低レイテンシー、高スループット、高度に冗長なネットワークで接続された、物理的に分離された複数のアベイラビリティーゾーンを提供します。アベイラビリティーゾーンでは、ゾーン間で中断することなく自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、フォールトトレランス、および拡張性が優れています。

EC2 Image Builder サービスを使用すると、あるリージョンで構築されたイメージを他のリージョンに配布できるため、AMI のマルチリージョン耐障害性が得られます。イメージパイプライン、レシピ、またはコンポーネントを「バックアップ」するメカニズムはありません。レシピとコンポーネントのドキュメントは、Amazon S3 バケットなどの Image Builder サービスの外部に保存できます。

EC2 Image Builder を高可用性 (HA) に設定することはできません。イメージを複数のリージョンに配信して、イメージの可用性を高めることができます。

 AWS リージョンとアベイラビリティーゾーンの詳細については、[AWS 「 グローバルインフラストラクチャ](https://aws.amazon.com/about-aws/global-infrastructure/)」を参照してください。

# Image Builder でのインフラストラクチャセキュリティ
<a name="infrastructure-security"></a>

 AWS グローバルネットワークは、セキュリティ機能を提供し、EC2 Image Builder などのサービスのネットワークアクセスを制御します。 AWS がそのサービスを支えるインフラストラクチャセキュリティの詳細については、「* AWS セキュリティ入門*」ホワイトペーパーの「[インフラストラクチャセキュリティ](https://docs.aws.amazon.com/whitepapers/latest/introduction-aws-security/infrastructure-security.html)」セクションを参照してください。

Image Builder API アクションのグローバル AWS ネットワークを介してリクエストを送信するには、クライアントソフトウェアが次のセキュリティガイドラインに準拠している必要があります。
+ Image Builder API アクションのリクエストを送信するには、クライアントソフトウェアがサポートされているTransport Layer Security (TLS)) を使用する必要があります。
**注記**  
AWS は TLS バージョン 1.0 および 1.1 のサポートを段階的に廃止しています。引き続き接続できるように、クライアントソフトウェアをTLS バージョン 1.2 以上に更新することを強くお勧めします。詳細については、[AWS セキュリティのブログ記事](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/)を参照してください。
+ クライアントソフトウェアは、Ephemeral Diffie-Hellman (DHE)やElliptic Curve Ephemeral Diffie-Hellman (ECDHE)のような完全な前方秘匿性(PFS)を持つ暗号スイートをサポートしなければなりません。Java 7 以降など、現在のシステムのほとんどはこれらのモードをサポートしています。
+  AWS Identity and Access Management (IAM) プリンシパルに関連付けられたアクセスキー ID とシークレットアクセスキーを使用して API リクエストに署名する必要があります。または、[AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) (AWS STS) を使ってリクエストのための一時的なセキュリティ認証情報を生成することもできます。

さらに、Image Builder がイメージのビルドとテストに使用する EC2 インスタンスには、 AWS Systems Managerとアクセスする必要があります。

# Image Builder イメージのパッチ管理
<a name="security-patch-management"></a>

AWS は、毎月更新されたマネージド AMIs を提供し、最新の更新とセキュリティパッチが次のオペレーティングシステムに適用されます。これらの AMI をカスタマイズのベースイメージとして使用できます。詳細については、「[サポートされるオペレーティングシステム](what-is-image-builder.md#image-builder-os)」を参照してください。
+ Amazon Linux 2、AL2023、Red Hat Enterprise Linux (RHEL)、CentOS、Ubuntu、SUSE Linux Enterprise Server を含む Linux ディストリビューション
+ Windows Server 2016 以降
+ macOS 10.14.x 以降

カスタムイメージの作成後は、[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)に従って、自身の責任で Amazon EC2 システムのパッチ適用を行う必要があります。アプリケーションワークロード内の EC2 インスタンスを簡単に差し替えることができる場合は、ベース AMI を更新し、そのイメージに基づいてすべてのコンピューティングノードを再デプロイする方法が最も効率的と考えられます。

**注記**  
macOS へのパッチ適用には、最新のマネージド AMI をベースイメージとして使用する新しいバージョンのレシピを作成し、そのレシピと他のイメージビルドリソースから、更新されたカスタムイメージをビルドすることをお勧めします。Mac インスタンスを簡単に差し替えることができない場合は、「*Amazon EC2 ユーザーガイド*」の「[Mac インスタンス上のオペレーティングシステムとソフトウェアの更新](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mac-instance-updates.html)」ページを参照してください。

Image Builder AMI を最新の状態に保つには、次の 2 つの方法があります。
+ **AWSが提供するパッチコンポーネント** - EC2 Image Builder には、保留中のオペレーティングシステムの更新をすべてインストールする次のビルドコンポーネントがあります。
  + `update-linux`
  + `update-windows`

  これらのコンポーネントは`UpdateOS`のアクションモジュールを使用します。詳細については、「[UpdateOS](toe-action-modules.md#action-modules-updateos)」を参照してください。コンポーネントは、 AWSの提供されているコンポーネントのリストから選択することで、イメージビルドパイプラインに追加できます。
+ **パッチ操作によるカスタムビルドコンポーネント** — サポートされている AMI のオペレーティングシステムにパッチを選択的にインストールまたは更新するには、Image Builder コンポーネントを作成して必要なパッチをインストールできます。カスタムコンポーネントは、シェルスクリプト (Bash または PowerShell) を使用してパッチをインストールすることも、`UpdateOS`のアクションモジュールを使用してインストールまたは除外するパッチを指定することもできます。詳細については、「[AWSTOE コンポーネントマネージャーでサポートされるアクションモジュール](toe-action-modules.md)」を参照してください。

  `UpdateOS` アクションモジュールを使用するコンポーネント (Linux と Windows のみ。`UpdateOS` アクションモジュールは macOS ではサポートされません)

  ```
  schemaVersion: 1.0
  phases:
    - name: build
  	steps:
  	  - name: UpdateOS
  		action: UpdateOS
  ```

  Bash を使用して yum アップデートをインストールするコンポーネント

  ```
  schemaVersion: 1.0
  phases:
    - name: build
  	steps:
  	  - name: InstallYumUpdates
  		action: ExecuteBash
  		inputs:
  		  commands:
  			- sudo yum update -y
  ```

# Image Builder でのセキュリティのベストプラクティス
<a name="security-best-practices"></a>

EC2 Image Builder には、独自のセキュリティポリシーを策定実装する際に考慮すべきセキュリティ機能が多数用意されています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションを説明するものではありません。これらのベストプラクティスはお客様の環境に適切ではないか、十分ではない場合があるため、これらは指示ではなく、有用な考慮事項と見なしてください。
+ Image Builder レシピでは、過度に制限の厳しいセキュリティグループを使用しないでください。
+ 信頼できないアカウントとイメージを共有しないでください。
+ プライベートまたは機密のデータを含むイメージを公開しないでください。
+ イメージのビルド時には、Windows または Linux で使用可能なすべてのセキュリティパッチを適用してください。
+ macOS レシピに定期的にマネージド AMI の更新を適用し、最新のセキュリティパッチが適用されたインスタンスを起動する新しいイメージを作成してください。

セキュリティのポスチャーおよび該当するセキュリティコンプライアンスレベルを検証するために、イメージをテストすることを強くお勧めします。 [Amazon Inspector](https://aws.amazon.com/inspector/) などのソリューションは、イメージのセキュリティとコンプライアンス状態を検証するのに役立ちます。

**Image Builder パイプライン用 IMDSv2**  
Image Builder パイプラインが実行されると、Image Builder がイメージの構築とテストに使用する EC2 インスタンスを起動するための HTTP リクエストが送信されます。パイプラインが起動リクエストに使用する IMDS のバージョンを設定するには、Image Builder インフラストラクチャ設定インスタンスのメタデータ設定で `httpTokens` パラメータを設定します。

**注記**  
Image Builder がパイプラインビルドから起動するすべての EC2 インスタンスを IMDSv2 を使用するように設定して、インスタンスメタデータの取得リクエストに署名付きトークンヘッダーが必要になるようにすることをお勧めします。

Image Builder インフラストラクチャ設定の詳細については、「[Image Builder インフラストラクチャ設定の管理](manage-infra-config.md)」を参照してください。Linux イメージの EC2 インスタンスメタデータオプションの詳細については、「Amazon EC2 ユーザーガイド」の「[インスタンスメタデータサービスのオプションを設定する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)」を参照してください。Windows イメージについては、「Amazon EC2 ユーザーガイド」の「[インスタンスメタデータサービスのオプションを設定する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)」を参照してください。

## ビルド後のクリーンアップが必要
<a name="post-build-cleanup"></a>

Image Builder がカスタムイメージのすべてのビルドステップを完了すると、Image Builder はテストとイメージ作成のためにビルドインスタンスを準備します。ビルドインスタンスをシャットダウンしてスナップショットを作成する前に、Image Builder は次のクリーンアップを実行してイメージのセキュリティを確保します。

------
#### [ Linux ]

Image Builder パイプラインはクリーンアップスクリプトを実行して、最終的なイメージがセキュリティのベストプラクティスに従っていることを確認し、スナップショットに引き継がれてはならないビルドアーティファクトや設定をすべて削除します。ただし、スクリプトのセクションをスキップしたり、ユーザーデータを完全に上書きしたりすることはできます。そして、Image Builder パイプラインによって生成されるイメージは、必ずしも特定の規制基準に準拠しているとは限りません。

パイプラインがビルド段階とテスト段階を完了すると、Image Builder は出力イメージを作成する直前に次のクリーンアップスクリプトを自動的に実行します。

**重要**  
レシピの**ユーザーデータ**をオーバーライドすると、スクリプトは実行されません。その場合は、`perform_cleanup`という名前の空のファイルを作成するコマンドをユーザーデータに含めてください。Image Builder はこのファイルを検出し、新しいイメージを作成する前にクリーンアップスクリプトを実行します。

```
#!/bin/bash
if [[ ! -f {{workingDirectory}}/perform_cleanup ]]; then
    echo "Skipping cleanup"
    exit 0
else
    sudo rm -f {{workingDirectory}}/perform_cleanup
fi

function cleanup() {
    FILES=("$@")
    for FILE in "${FILES[@]}"; do
        if [[ -f "$FILE" ]]; then
            echo "Deleting $FILE";
            sudo shred -zuf $FILE;
        fi;
        if [[ -f $FILE ]]; then
            echo "Failed to delete '$FILE'. Failing."
            exit 1
        fi;
    done
};


# Clean up for cloud-init files
CLOUD_INIT_FILES=(
    "/etc/sudoers.d/90-cloud-init-users"
    "/etc/locale.conf"
    "/var/log/cloud-init.log"
    "/var/log/cloud-init-output.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_cloudinit_files ]]; then
    echo "Skipping cleanup of cloud init files"
else
    echo "Cleaning up cloud init files"
    cleanup "${CLOUD_INIT_FILES[@]}"
    if [[ $( sudo find /var/lib/cloud -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting files within /var/lib/cloud/*"
        sudo find /var/lib/cloud -type f -exec shred -zuf {} \;
    fi;

    if [[ $( sudo ls /var/lib/cloud | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/lib/cloud/*"
        sudo rm -rf /var/lib/cloud/* || true
    fi;
fi;


# Clean up for temporary instance files
INSTANCE_FILES=(
    "/etc/.updated"
    "/etc/aliases.db"
    "/etc/hostname"
    "/var/lib/misc/postfix.aliasesdb-stamp"
    "/var/lib/postfix/master.lock"
    "/var/spool/postfix/pid/master.pid"
    "/var/.updated"
    "/var/cache/yum/x86_64/2/.gpgkeyschecked.yum"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_files ]]; then
    echo "Skipping cleanup of instance files"
else
    echo "Cleaning up instance files"
    cleanup "${INSTANCE_FILES[@]}"
fi;


# Clean up for ssh files
SSH_FILES=(
    "/etc/ssh/ssh_host_rsa_key"
    "/etc/ssh/ssh_host_rsa_key.pub"
    "/etc/ssh/ssh_host_ecdsa_key"
    "/etc/ssh/ssh_host_ecdsa_key.pub"
    "/etc/ssh/ssh_host_ed25519_key"
    "/etc/ssh/ssh_host_ed25519_key.pub"
    "/root/.ssh/authorized_keys"
)
if [[ -f {{workingDirectory}}/skip_cleanup_ssh_files ]]; then
    echo "Skipping cleanup of ssh files"
else
    echo "Cleaning up ssh files"
    cleanup "${SSH_FILES[@]}"
    USERS=$(ls /home/)
    for user in $USERS; do
        echo Deleting /home/"$user"/.ssh/authorized_keys;
        sudo find /home/"$user"/.ssh/authorized_keys -type f -exec shred -zuf {} \;
    done
    for user in $USERS; do
        if [[ -f /home/"$user"/.ssh/authorized_keys ]]; then
            echo Failed to delete /home/"$user"/.ssh/authorized_keys;
            exit 1
        fi;
    done;
fi;


# Clean up for instance log files
INSTANCE_LOG_FILES=(
    "/var/log/audit/audit.log"
    "/var/log/boot.log"
    "/var/log/dmesg"
    "/var/log/cron"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_log_files ]]; then
    echo "Skipping cleanup of instance log files"
else
    echo "Cleaning up instance log files"
    cleanup "${INSTANCE_LOG_FILES[@]}"
fi;

# Clean up for TOE files
if [[ -f {{workingDirectory}}/skip_cleanup_toe_files ]]; then
    echo "Skipping cleanup of TOE files"
else
    echo "Cleaning TOE files"
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within {{workingDirectory}}/TOE_*"
        sudo find {{workingDirectory}}/TOE_* -type f -exec shred -zuf {} \;
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete {{workingDirectory}}/TOE_*"
        exit 1
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
        echo "Deleting {{workingDirectory}}/TOE_*"
        sudo rm -rf {{workingDirectory}}/TOE_*
    fi
    if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete {{workingDirectory}}/TOE_*"
        exit 1
    fi
fi

# Clean up for ssm log files
if [[ -f {{workingDirectory}}/skip_cleanup_ssm_log_files ]]; then
    echo "Skipping cleanup of ssm log files"
else
    echo "Cleaning up ssm log files"
    if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within /var/log/amazon/ssm/*"
        sudo find /var/log/amazon/ssm -type f -exec shred -zuf {} \;
    fi
    if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete /var/log/amazon/ssm"
        exit 1
    fi
    if [[ -d "/var/log/amazon/ssm" ]]; then
        echo "Deleting /var/log/amazon/ssm/*"
        sudo rm -rf /var/log/amazon/ssm
    fi
    if [[ -d "/var/log/amazon/ssm" ]]; then
        echo "Failed to delete /var/log/amazon/ssm"
        exit 1
    fi
fi


if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
    echo "Deleting /var/log/sa/sa*"
    sudo shred -zuf /var/log/sa/sa*
fi
if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
    echo "Failed to delete /var/log/sa/sa*"
    exit 1
fi

if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/lib/dhclient/dhclient*.lease"
        sudo shred -zuf /var/lib/dhclient/dhclient*.lease
fi
if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
        echo "Failed to delete /var/lib/dhclient/dhclient*.lease"
        exit 1
fi

if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
        echo "Deleting files within /var/tmp/*"
        sudo find /var/tmp -type f -exec shred -zuf {} \;
fi
if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
        echo "Failed to delete /var/tmp"
        exit 1
fi
if [[ $( sudo ls /var/tmp | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/tmp/*"
        sudo rm -rf /var/tmp/*
fi

# Shredding is not guaranteed to work well on rolling logs

if [[ -f "/var/lib/rsyslog/imjournal.state" ]]; then
        echo "Deleting /var/lib/rsyslog/imjournal.state"
        sudo shred -zuf /var/lib/rsyslog/imjournal.state
        sudo rm -f /var/lib/rsyslog/imjournal.state
fi

if [[ $( sudo ls /var/log/journal/ | sudo wc -l ) -gt 0 ]]; then
        echo "Deleting /var/log/journal/*"
        sudo find /var/log/journal/ -type f -exec shred -zuf {} \;
        sudo rm -rf /var/log/journal/*
fi

sudo touch /etc/machine-id
```

------
#### [ Windows ]

Image Builder パイプラインが Windows イメージをカスタマイズすると、Microsoft [Sysprep](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--generalize--a-windows-installation?view=windows-11) ユーティリティが実行されます。これらのアクションは[AWS 、イメージを強化およびクリーンアップするためのベストプラクティス](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/)に従います。

------
#### [ macOS ]

Image Builder パイプラインはクリーンアップスクリプトを実行して、最終的なイメージがセキュリティのベストプラクティスに従っていることを確認し、スナップショットに引き継がれてはならないビルドアーティファクトや設定をすべて削除します。ただし、スクリプトのセクションをスキップしたり、ユーザーデータを完全に上書きしたりすることはできます。そして、Image Builder パイプラインによって生成されるイメージは、必ずしも特定の規制基準に準拠しているとは限りません。

パイプラインがビルド段階とテスト段階を完了すると、Image Builder は出力イメージを作成する直前に次のクリーンアップスクリプトを自動的に実行します。

**重要**  
レシピの**ユーザーデータ**をオーバーライドすると、スクリプトは実行されません。その場合は、`perform_cleanup`という名前の空のファイルを作成するコマンドをユーザーデータに含めてください。Image Builder はこのファイルを検出し、新しいイメージを作成する前にクリーンアップスクリプトを実行します。

```
#!/bin/bash
if [[ ! -f {{workingDirectory}}/perform_cleanup ]]; then
  echo "Skipping cleanup"
  exit 0
else
  sudo rm -f {{workingDirectory}}/perform_cleanup
fi

function cleanup() {
  FILES=("$@")
  for FILE in "${FILES[@]}"; do
      if [[ -f "$FILE" ]]; then
          echo "Deleting $FILE";
          sudo rm -f $FILE;
      fi;
      if [[ -f $FILE ]]; then
          echo "Failed to delete '$FILE'. Failing."
          exit 1
      fi;
  done
};

# Clean up for cloud-init files
CLOUD_INIT_FILES=(
  "/etc/sudoers.d/90-cloud-init-users"
  "/etc/locale.conf"
  "/var/log/cloud-init.log"
  "/var/log/cloud-init-output.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_cloudinit_files ]]; then
  echo "Skipping cleanup of cloud init files"
else
  echo "Cleaning up cloud init files"
  cleanup "${CLOUD_INIT_FILES[@]}"
  if [[ $( sudo find /var/lib/cloud -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting files within /var/lib/cloud/*"
      sudo find /var/lib/cloud -type f -exec rm -f {} \;
  fi;

  if [[ $( sudo ls /var/lib/cloud | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/lib/cloud/*"
      sudo rm -rf /var/lib/cloud/* || true
  fi;
fi;


# Clean up for temporary instance files
INSTANCE_FILES=(
  "/etc/.updated"
  "/etc/aliases.db"
  "/etc/hostname"
  "/var/lib/misc/postfix.aliasesdb-stamp"
  "/var/lib/postfix/master.lock"
  "/var/spool/postfix/pid/master.pid"
  "/var/.updated"
  "/var/cache/yum/x86_64/2/.gpgkeyschecked.yum"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_files ]]; then
  echo "Skipping cleanup of instance files"
else
  echo "Cleaning up instance files"
  cleanup "${INSTANCE_FILES[@]}"
fi;


# Clean up for ssh files
SSH_FILES=(
  "/etc/ssh/ssh_host_rsa_key"
  "/etc/ssh/ssh_host_rsa_key.pub"
  "/etc/ssh/ssh_host_ecdsa_key"
  "/etc/ssh/ssh_host_ecdsa_key.pub"
  "/etc/ssh/ssh_host_ed25519_key"
  "/etc/ssh/ssh_host_ed25519_key.pub"
  "/root/.ssh/authorized_keys"
)
if [[ -f {{workingDirectory}}/skip_cleanup_ssh_files ]]; then
  echo "Skipping cleanup of ssh files"
else
  echo "Cleaning up ssh files"
  cleanup "${SSH_FILES[@]}"
  USERS=$(ls /home/)
  for user in $USERS; do
      echo Deleting /home/"$user"/.ssh/authorized_keys;
      sudo find /home/"$user"/.ssh/authorized_keys -type f -exec rm -f {} \;
  done
  for user in $USERS; do
      if [[ -f /home/"$user"/.ssh/authorized_keys ]]; then
          echo Failed to delete /home/"$user"/.ssh/authorized_keys;
          exit 1
      fi;
  done;
fi;


# Clean up for instance log files
INSTANCE_LOG_FILES=(
  "/var/log/audit/audit.log"
  "/var/log/boot.log"
  "/var/log/dmesg"
  "/var/log/cron"
  "/var/log/amazon/ec2/ec2-macos-init.log"
  "/var/log/amazon/ec2/ena-ethernet.log"
  "/var/log/amazon/ec2/system-monitoring.log"
)
if [[ -f {{workingDirectory}}/skip_cleanup_instance_log_files ]]; then
  echo "Skipping cleanup of instance log files"
else
  echo "Cleaning up instance log files"
  cleanup "${INSTANCE_LOG_FILES[@]}"
fi;

# Clean up for TOE files
if [[ -f {{workingDirectory}}/skip_cleanup_toe_files ]]; then
  echo "Skipping cleanup of TOE files"
else
  echo "Cleaning TOE files"
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within {{workingDirectory}}/TOE_*"
      sudo find {{workingDirectory}}/TOE_* -type f -exec rm -f {} \;
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete {{workingDirectory}}/TOE_*"
      exit 1
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
      echo "Deleting {{workingDirectory}}/TOE_*"
      sudo rm -rf {{workingDirectory}}/TOE_*
  fi
  if [[ $( sudo find {{workingDirectory}}/TOE_* -type d | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete {{workingDirectory}}/TOE_*"
      exit 1
  fi
fi

# Clean up for ssm log files
if [[ -f {{workingDirectory}}/skip_cleanup_ssm_log_files ]]; then
  echo "Skipping cleanup of ssm log files"
else
  echo "Cleaning up ssm log files"
  if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within /var/log/amazon/ssm/*"
      sudo find /var/log/amazon/ssm -type f -exec rm -f {} \;
  fi
  if [[ $( sudo find /var/log/amazon/ssm -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete /var/log/amazon/ssm"
      exit 1
  fi
  if [[ -d "/var/log/amazon/ssm" ]]; then
      echo "Deleting /var/log/amazon/ssm/*"
      sudo rm -rf /var/log/amazon/ssm
  fi
  if [[ -d "/var/log/amazon/ssm" ]]; then
      echo "Failed to delete /var/log/amazon/ssm"
      exit 1
  fi
fi


if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
  echo "Deleting /var/log/sa/sa*"
  sudo rm -f /var/log/sa/sa*
fi
if [[ $( sudo find /var/log/sa/sa* -type f | sudo wc -l ) -gt 0 ]]; then
  echo "Failed to delete /var/log/sa/sa*"
  exit 1
fi

if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/lib/dhclient/dhclient*.lease"
      sudo rm -f /var/lib/dhclient/dhclient*.lease
fi
if [[ $( sudo find /var/lib/dhclient/dhclient*.lease -type f | sudo wc -l ) -gt 0 ]]; then
      echo "Failed to delete /var/lib/dhclient/dhclient*.lease"
      exit 1
fi

if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
      echo "Deleting files within /var/tmp/*"
      sudo find /var/tmp -type f -exec rm -f {} \;
fi
if [[ $( sudo find /var/tmp -type f | sudo wc -l) -gt 0 ]]; then
      echo "Failed to delete /var/tmp"
      exit 1
fi
if [[ $( sudo ls /var/tmp | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/tmp/*"
      sudo rm -rf /var/tmp/*
fi

# Shredding is not guaranteed to work well on rolling logs

if [[ -f "/var/lib/rsyslog/imjournal.state" ]]; then
      echo "Deleting /var/lib/rsyslog/imjournal.state"
      sudo rm -f /var/lib/rsyslog/imjournal.state
      sudo rm -f /var/lib/rsyslog/imjournal.state
fi

if [[ $( sudo ls /var/log/journal/ | sudo wc -l ) -gt 0 ]]; then
      echo "Deleting /var/log/journal/*"
      sudo find /var/log/journal/ -type f -exec rm -f {} \;
      sudo rm -rf /var/log/journal/*
fi

sudo touch /etc/machine-id
```

------

## Linux クリーンアップスクリプトをオーバーライドする
<a name="override-linux-cleanup-script"></a>

Image Builder は、デフォルトで安全で、セキュリティのベストプラクティスに従ったイメージを作成します。ただし、より高度なユースケースでは、組み込みのクリーンアップスクリプトの 1 つ以上のセクションをスキップする必要がある場合があります。クリーンアップの一部を省略する必要がある場合は、出力した AMI をテストしてイメージのセキュリティを確認することを強くお勧めします。

**重要**  
クリーンアップスクリプトのセクションをスキップすると、所有者アカウントの詳細や SSH キーなどの機密情報が最終的なイメージや、そのイメージから起動されるすべてのインスタンスに含まれる可能性があります。また、異なるアベイラビリティーゾーン、リージョン、またはアカウントで起動すると問題が発生する可能性があります。

次の表は、クリーンアップスクリプトのセクション、そのセクションで削除されるファイル、および Image Builder がスキップすべきセクションにフラグを立てるために使用できるファイル名の概要を示しています。クリーンアップスクリプトの特定のセクションをスキップするには、[CreateFile](toe-action-modules.md#action-modules-createfile)のコンポーネントアクションモジュールまたはユーザーデータ内のコマンド (オーバーライドする場合) を使用して、「**セクションをスキップ**」列で指定した名前の空のファイルを作成します。

**注記**  
クリーンアップスクリプトのセクションをスキップするために作成するファイルには、ファイル拡張子を付けないでください。例えば、スクリプトの`CLOUD_INIT_FILES`セクションをスキップしたいが、`skip_cleanup_cloudinit_files.txt`という名前のファイルを作成した場合、Image Builder はスキップファイルを認識できません。


**Input**  

| クリーンアップセクション | 削除されたファイル | セクションファイル名をスキップする | 
| --- | --- | --- | 
| `CLOUD_INIT_FILES` | `/etc/sudoers.d/90-cloud-init-users` `/etc/locale.conf` `/var/log/cloud-init.log` `/var/log/cloud-init-output.log`  | `skip_cleanup_cloudinit_files` | 
| `INSTANCE_FILES` | `/etc/.updated` `/etc/aliases.db` `/etc/hostname` `/var/lib/misc/postfix.aliasesdb-stamp` `/var/lib/postfix/master.lock` `/var/spool/postfix/pid/master.pid` `/var/.updated` `/var/cache/yum/x86_64/2/.gpgkeyschecked.yum`  | `skip_cleanup_instance_files` | 
| `SSH_FILES` | `/etc/ssh/ssh_host_rsa_key` `/etc/ssh/ssh_host_rsa_key.pub` `/etc/ssh/ssh_host_ecdsa_key` `/etc/ssh/ssh_host_ecdsa_key.pub` `/etc/ssh/ssh_host_ed25519_key` `/etc/ssh/ssh_host_ed25519_key.pub` `/root/.ssh/authorized_keys` `/home/<all users>/.ssh/authorized_keys;`  | `skip_cleanup_ssh_files` | 
| `INSTANCE_LOG_FILES` | `/var/log/audit/audit.log` `/var/log/boot.log` `/var/log/dmesg` `/var/log/cron`  | `skip_cleanup_instance_log_files` | 
| `TOE_FILES` | `{{workingDirectory}}/TOE_*` | `skip_cleanup_toe_files` | 
| `SSM_LOG_FILES` | `/var/log/amazon/ssm/*` | `skip_cleanup_ssm_log_files` | 