Amazon Web Services ブログ

AWS IAM アイデンティティセンターが、保管中の暗号化のためにカスタマーマネージド KMS キーのサポートを開始

10 月 6 日より、独自の AWS Key Management Service (AWS KMS) キーを使用して、AWS IAM アイデンティティセンターの組織インスタンスに保存されているユーザー属性やグループ属性などの ID データを暗号化できるようになりました。

規制の厳しい業界で事業を展開している多くの組織は、暗号化キー管理を完全に制御する必要があります。アイデンティティセンターでは既に AWS 所有キーを使用して保管中のデータを暗号化していますが、監査やコンプライアンスのために独自の暗号化キーを管理する必要があるお客様もいます。

このリリースにより、カスタマーマネージド KMS キー (CMK) を使用して、アイデンティティセンターの保管中の ID データを暗号化できるようになりました。CMK を使用すると、作成、ローテーション、削除など、キーのライフサイクルを完全に制御できます。AWS Key Management Service (AWS KMS) キーポリシーと IAM ポリシーを使用して、キーへのきめ細かなアクセスコントロールを設定できるため、認可されたプリンシパルのみが暗号化されたデータにアクセスできるようにするのに役立ちます。起動時には、CMK は IAM アイデンティティセンターインスタンスと同じ AWS アカウントおよびリージョンに存在する必要があります。アイデンティティセンターと KMS の統合により、キーの使用状況を監査するための詳細な AWS CloudTrail ログが提供され、規制コンプライアンス要件を遵守するのに役立ちます。

アイデンティティセンターは、デプロイのニーズに合わせて、単一リージョンキーとマルチリージョンキーの両方をサポートしています。アイデンティティセンターインスタンスは現在単一のリージョンにのみデプロイできますが、会社のポリシーで単一リージョンキーに制限されていない限り、マルチリージョン AWS KMS キーを使用することをお勧めします。マルチリージョンキーは、各リージョンで独立したキーインフラストラクチャを維持しながら、リージョン間で一貫したキーマテリアルを提供します。これにより、暗号化戦略の柔軟性が高まり、デプロイが将来の変化にも対応できるようにするのに役立ちます。

始めましょう
CMK を使用してアイデンティティセンターの組織インスタンスの ID データを暗号化するとします。私の組織では、アイデンティティセンターを使用して、AWS マネージドアプリケーション (Amazon Q BusinessAmazon Athena など) へのアクセスを従業員に付与しています。

現時点では、一部の AWS マネージドアプリケーションは、カスタマーマネージド KMS キーで設定されたアイデンティティセンターでは使用できません。互換性のあるアプリケーションのリストは常に更新されるため、「AWS managed applications that you can use with Identity Center」で最新情報をご覧ください。

大まかなプロセスでは、まず AWS KMS で対称カスタマーマネージドキー (CMK) を作成する必要があります。このキーは、暗号化および復号オペレーション用に設定する必要があります。次に、アイデンティティセンター、AWS マネージドアプリケーション、管理者、およびアイデンティティセンターと IAM アイデンティティセンターサービス API にアクセスする必要がある他のプリンシパルにアクセスを付与するキーポリシーを設定します。キーにはポリシーを、IAM プリンシパルには IAM ポリシーを、それぞれアイデンティティセンターの使用方法に応じて定義する必要があります。サービスドキュメントには、極めて一般的なユースケースをカバーするのに役立つ詳細が記載されています

このデモは 3 つのパートに分かれています。まず、AWS KMS でカスタマーマネージドキーを作成し、アイデンティティセンターと AWS マネージドアプリケーションがそのキーを使用することを認可する許可を設定します。次に、AWS アプリケーション管理者など、別の AWS アカウントのキーを使用するプリンシパルの IAM ポリシーを更新します。最後に、アイデンティティセンターがそのキーを使用するように設定します。

パート 1: キーを作成して、許可を定義する

まず、AWS KMS で新しい CMK を作成しましょう。

AWS KMS、キーを作成する、パート 1

キーは、アイデンティティセンターインスタンスと同じ AWS リージョンおよび AWS アカウントに存在する必要があります。AWS Organizations 内の組織の管理アカウントに、アイデンティティセンターインスタンスとキーを作成する必要があります。

アイデンティティセンターインスタンスと同じリージョンで AWS Key Management Service (AWS KMS) コンソールに移動し、[キーを作成] を選択します。これでキー作成ウィザードが起動します。

AWS KMS、キーを作成する、パート 2

[ステップ 1 – キーを設定する] で、キータイプとして、[対称] (暗号化と復号の両方に使用される単一のキー) または [非対称] (暗号化/復号と署名/検証用のパブリックキーとプライベートキーのペア) を選択します。アイデンティティセンターでは、保管中の暗号化に対称キーが必要です。私は [対称] を選択します。

キーの使用方法については、[暗号化および復号] を選択します。これにより、キーはデータの暗号化と復号にのみ使用されます。

[高度なオプション][キーマテリアルのオリジン][KMS – 推奨] を選択し、AWS KMS がキーマテリアルを作成および管理するようにします。

[リージョン] で、[シングルリージョンキー] または [マルチリージョンキー] を選択します。[マルチリージョンキー] を選択すると、キー管理者は、キーを他のリージョンにレプリケートできます。既に説明したように、アイデンティティセンターでは現時点ではこれは必要ありませんが、設定が将来の変化に対応できるようにするのに役立ちます。なお、シングルリージョンキーを作成した後で、マルチリージョンキーに変換することはできません (ただし、アイデンティティセンターによって使用されるキーを変更することは可能です)。

その後、[次へ] を選択して、ラベルの追加、管理許可の定義、使用許可の設定、キー作成前の最終設定の確認などの追加の設定ステップに進みます。

AWS KMS、キーを作成する、パート 3

[ステップ 2 – ラベルを追加する] で、キーの [エイリアス] 名を入力し、[次へ] を選択します。

このデモでは、ドキュメントで提供されているテンプレートを使用してポリシーステートメントを追加することで、キーポリシーを編集します。 ステップ 3 とステップ 4 はスキップし、[ステップ 5 – キーポリシーを編集する] に進みます。

AWS KMS、キーを作成する、パート 5

アイデンティティセンターでは、少なくともアイデンティティセンターとその管理者がキーを使用できるようにする許可が必要です。そのため、3 つのポリシーステートメントを追加します。1 つ目と 2 つ目はサービスの管理者を認可し、3 つ目はアイデンティティセンターサービス自体を認可します。

{
	"Version": "2012-10-17",
	"Id": "key-consolepolicy-3",
	"Statement": [
		{
			"Sid": "Allow_IAMIdentityCenter_Admin_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore",
			"Effect": "Allow",
			"Principal": {
				"AWS": "ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE"
			},
			"Action": [
				"kms:Decrypt",
				"kms:Encrypt",
				"kms:GenerateDataKeyWithoutPlaintext"
			],
			"Resource": "*",
			"Condition": {
				"StringLike": {
					"kms:ViaService": [
						"sso.*.amazonaws.com",
						"identitystore.*.amazonaws.com"
					]
				}
			}
		},
		{
			"Sid": "Allow_IdentityCenter_admin_to_describe_the_KMS_key",
			"Effect": "Allow",
			"Principal": {
				"AWS": "ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE"
			},
			"Action": "kms:DescribeKey",
			"Resource": "*"
		},
		{
			"Sid": "Allow_IdentityCenter_and_IdentityStore_to_use_the_KMS_key",
			"Effect": "Allow",
			"Principal": {
				"Service": [
					"sso.amazonaws.com",
					"identitystore.amazonaws.com"
				]
			},
			"Action": [
				"kms:Decrypt",
				"kms:ReEncryptTo",
				"kms:ReEncryptFrom",
				"kms:GenerateDataKeyWithoutPlaintext"
			],
			"Resource": "*",
            "Condition": {
    	       "StringEquals": { 
                      "aws:SourceAccount": "<Identity Center Account ID>" 
	           }
            }		
		},
		{
			"Sid": "Allow_IdentityCenter_and_IdentityStore_to_describe_the_KMS_key",
			"Effect": "Allow",
			"Principal": {
				"Service": [
					"sso.amazonaws.com",
					"identitystore.amazonaws.com"
				]
			},
			"Action": [
				"kms:DescribeKey"
			],
			"Resource": "*"
		}		
	]
}

また、AWS マネージドアプリケーションの使用という私のユースケースを許可するために、ポリシーステートメントをさらに追加する必要があります。これらの 2 つのポリシーステートメントを追加して、AWS マネージドアプリケーションとその管理者が KMS キーを使用することを認可します。このドキュメントには、追加のユースケースとそれぞれのポリシーがリストされています

{
    "Sid": "Allow_AWS_app_admins_in_the_same_AWS_organization_to_use_the_KMS_key",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals" : {
           "aws:PrincipalOrgID": "MY_ORG_ID (format: o-xxxxxxxx)"
        },
        "StringLike": {
            "kms:ViaService": [
                "sso.*.amazonaws.com", "identitystore.*.amazonaws.com"
            ]
        }
    }
},
{
   "Sid": "Allow_managed_apps_to_use_the_KMS_Key",
   "Effect": "Allow",
   "Principal": "*",
   "Action": [
      "kms:Decrypt"
    ],
   "Resource": "*",
   "Condition": {
      "Bool": { "aws:PrincipalIsAWSService": "true" },
      "StringLike": {
         "kms:ViaService": [
             "sso.*.amazonaws.com", "identitystore.*.amazonaws.com"
         ]
      },
      "StringEquals": { "aws:SourceOrgID": "MY_ORG_ID (format: o-xxxxxxxx)" }
   }
}

キーの使用を特定のアイデンティティセンターインスタンス、特定のアプリケーションインスタンス、または特定のアプリケーション管理者にさらに制限することもできます。このドキュメントには、お客様のユースケース向けの高度なキーポリシーの例が記載されています

許可セットの再作成時に IAM ロール名が変更されないようにするには、「Custom trust policy example」で説明されている方法を使用します。

パート 2: IAM ポリシーを更新して、別の AWS アカウントからの KMS キーの使用を許可する

アイデンティティセンターの委任された管理者や AWS アプリケーション管理者など、別の AWS アカウントからアイデンティティセンターサービス API を使用するすべての IAM プリンシパルには、これらの API 経由での KMS キーの使用を許可する IAM ポリシーステートメントが必要です。

新しいポリシーを作成し、ユースケースに関連する IAM ロールにそのポリシーをアタッチすることで、キーにアクセスするための許可を付与します。これらのステートメントを IAM ロールの既存の ID ベースのポリシーに追加することもできます。

これを行うには、キーを作成した後、その ARN を見つけて、以下のテンプレートの key_ARN を置き換えます。その後、そのポリシーをマネージドアプリケーション管理者の IAM プリンシパルにアタッチします。このドキュメントでは、キーにアクセスするための許可をアイデンティティセンターの委任された管理者に付与する IAM ポリシーについても説明しています。

マネージドアプリケーション管理者向けの例を次に示します:

{
      "Sid": "Allow_app_admins_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore",
      "Effect": "Allow",
      "Action": 
        "kms:Decrypt",
      "Resource": "<key_ARN>",
      "Condition": {
        "StringLike": {
          "kms:ViaService": [
            "sso.*.amazonaws.com",
            "identitystore.*.amazonaws.com"
          ]
        }
      }
    }

ドキュメントでは、最も一般的なユースケース向けの IAM ポリシーテンプレートを共有しています

パート 3: キーを使用するように IAM アイデンティティセンターを設定する

CMK は、アイデンティティセンターの組織インスタンスを有効にする際に、または既存のインスタンスで設定できます。また、CMK を切り替えたり、AWS 所有キーに戻したりすることで、いつでも暗号化設定を変更できます。

KMS キーの許可を正しく設定しないと、アイデンティティセンターの運用が中断され、アイデンティティセンターを通じた AWS マネージドアプリケーションおよびアカウントへのアクセスが中断される可能性があることにご留意ください。この最後のステップに慎重に進み、ドキュメントをよく読み、理解するようにしてください。

CMK を作成して設定したら、アイデンティティセンターを有効にする際に [高度な設定] でその CMK を選択できます。

CMK 設定を使用した IDC

AWS マネジメントコンソールを使用して既存のアイデンティティセンターインスタンスで CMK を設定するには、まず AWS マネジメントコンソールのアイデンティティセンターのセクションに移動します。そこで、ナビゲーションペインから [設定] を選択し、[管理] タブを選択して、[IAM アイデンティティセンターの保管中のデータの暗号化用のキー] セクションで [暗号化を管理] を選択します。

既存の IDC 上のキーの変更

いつでも、同じ AWS アカウントから別の CMK を選択したり、AWS マネージドキーに切り替えて戻したりできます。

[保存] を選択すると、キーの変更プロセスが完了するまで数秒かかります。移行中もすべてのサービス機能は中断なく使用できます。何らかの理由でアイデンティティセンターが新しいキーにアクセスできない場合は、エラーメッセージが返され、アイデンティティセンターは引き続き現在のキーを使用し、既に暗号化で使用されている暗号化メカニズムで ID データを暗号化し続けます。

IDC 上の CMK、新しいキーを選択

留意事項
作成した暗号化キーは、アイデンティティセンターの重要なコンポーネントとなります。保管中の ID 属性を暗号化するために独自のマネージドキーを使用することを選択する場合は、次の点を確認する必要があります。

  • KMS キーを使用するために必要な許可を設定しましたか? 適切な許可がない場合、CMK を有効にすると失敗したり、IAM アイデンティティセンターの管理や AWS マネージドアプリケーションが中断したりする可能性があります。
  • AWS マネージドアプリケーションが CMK キーと互換性があることを確認しましたか? 互換性のあるアプリケーションの一覧については、「AWS managed applications that you can use with IAM Identity Center」をご覧ください。 CMK と互換性のない AWS マネージドアプリケーションによって使用されるアイデンティティセンターのために CMK を有効にすると、それらのアプリケーションの運用が中断されます。互換性のないアプリケーションがある場合は、続行しないでください。
  • 組織は、アイデンティティセンターおよび Identity Store API を利用するために追加の IAM ロール設定を必要とする AWS マネージドアプリケーションを使用していますか? 既にデプロイされているこのような各 AWS マネージドアプリケーションについて、マネージドアプリケーションのユーザーガイドを読み、IAM アイデンティティセンターの使用のための、更新された KMS キーの許可を確認し、指示に従ってそれらの許可を更新して、アプリケーションが中断しないようにしてください。
  • 簡潔にするために、この記事の KMS キーポリシーステートメントでは、暗号化コンテキストを省略しています。暗号化コンテキストを使用すると、特定のインスタンスを含むアイデンティティセンターへの KMS キーの使用を制限できます。本番のシナリオでは、アイデンティティセンターに次のような条件を追加できます:
    "Condition": {
       "StringLike": {
          "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}",
          "kms:ViaService": "sso.*.amazonaws.com"
        }
    }

    あるいは、Identity Store に次のような条件を追加できます:

    "Condition": {
       "StringLike": {
          "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}",
          "kms:ViaService": "identitystore.*.amazonaws.com"
        }
    }

料金と利用可能なリージョン
キーストレージと API の使用には、AWS KMS の標準料金が適用されます。アイデンティティセンターは引き続き追加料金なしでご利用いただけます。

この機能は、すべての AWS 商用リージョン、AWS GovCloud (米国)、および AWS 中国リージョンでご利用いただけます。詳細については、「IAM アイデンティティセンターユーザーガイド」にアクセスしてください。

セキュリティとコンプライアンスの要件を満たすために、この新しい機能をどのように使用するのかについて、ぜひお聞かせください。

– seb

原文はこちらです。