Amazon Web Services 한국 블로그

AWS IAM Identity Center, 암호화를 위한 고객 관리형 KMS 키 지원

오늘부터 자체 AWS Key Management Service(AWS KMS) 키를 사용하여 AWS IAM Identity Center 조직 인스턴스에 저장된 사용자 및 그룹 속성과 같은 ID 데이터를 암호화할 수 있습니다.

규제 대상 업계에서 활동하는 많은 조직이 암호화 키 관리를 완벽하게 제어해야 합니다. Identity Center는 이미 AWS 소유 키를 사용하여 저장 데이터를 암호화하고 있지만, 일부 고객은 감사 및 규정 준수를 위해 자체 암호화 키를 관리할 수 있어야 합니다.

이번 출시로 이제 고객 관리형 KMS 키(CMK)를 사용하여 저장된 Identity Center ID 데이터를 암호화할 수 있습니다. CMK를 사용하면 생성, 교체, 삭제를 비롯한 키 수명 주기를 완벽하게 제어할 수 있습니다. AWS Key Management Service(AWS KMS) 키 정책 및 IAM 정책을 기반으로 키에 대한 세분화된 액세스 제어를 구성하여 권한 있는 위탁자만 암호화된 데이터에 액세스할 수 있도록 할 수 있습니다. 처음 시작할 때 CMK는 IAM Identity Center 인스턴스와 동일한 AWS 계정 및 리전에 있어야 합니다. Identity Center와 KMS 간 통합을 통해 키 사용 사례를 감사하기 위해 상세한 AWS CloudTrail 로그를 제공하고 규제 준수 요구 사항을 충족할 수 있습니다.

Identity Center는 배포 요구 사항에 맞게 단일 리전 키와 다중 리전 키를 모두 지원합니다. Identity Center 인스턴스는 현재 단일 리전에만 배포할 수 있지만 회사 정책에 따라 단일 리전 키로 제한되지 않는 한 다중 리전 AWS KMS 키를 사용하는 것이 좋습니다. 다중 리전 키는 각 리전에서 독립적인 키 인프라를 유지하면서 여러 리전에서 일관된 키 구성 요소를 제공합니다. 이를 통해 암호화 전략의 유연성이 향상되고 향후 배포에 대비할 수 있습니다.

그럼 시작해 보겠습니다.
CMK를 사용하여 Identity Center 조직 인스턴스의 ID 데이터를 암호화하는 상황을 가정합니다. 조직에서는 Identity Center를 사용하여 Amazon Q Business 또는 Amazon Athena와 같은 AWS 관리형 애플리케이션에 대한 액세스 권한을 직원에게 부여합니다.

현재 일부 AWS 관리형 애플리케이션은 고객 관리형 KMS 키로 구성된 Identity Center와 함께 사용할 수 없습니다. Identity Center와 함께 사용할 수 있는 AWS 관리형 애플리케이션에서 계속 확장되는 호환 애플리케이션의 최신 목록을 확인하세요.

상위 프로세스를 수행하려면 먼저 AWS KMS에서 대칭 고객 관리형 키(CMK)를 생성해야 합니다. 암호화 및 해독 작업을 위해 이 키를 구성해야 합니다. 다음으로, Identity Center 및 IAM Identity Center 서비스 API에 액세스해야 하는 Identity Center, AWS 관리형 애플리케이션, 관리자 및 기타 위탁자에게 액세스 권한을 부여하도록 주요 정책을 구성합니다. Identity Center 사용 사례에 따라 키에 대한 정책과 IAM 위탁자에 대한 IAM 정책을 다르게 정의해야 합니다. 서비스 설명서에는 가장 일반적인 사용 사례를 위한 유용한 세부 정보가 포함되어 있습니다.

이번 데모는 세 부분으로 구성됩니다. 먼저 AWS KMS에서 고객 관리형 키를 생성하고 Identity Center 및 AWS 관리형 애플리케이션에 이 키를 사용할 권한을 부여하도록 구성합니다. 그런 다음 다른 AWS 계정에서 키를 사용할 위탁자(예: AWS 애플리케이션 관리자)에 대한 IAM 정책을 업데이트합니다. 마지막으로 키를 사용하도록 Identity Center를 구성합니다.

파트 1: 키 생성 및 권한 정의

먼저 AWS KMS에서 새 CMK를 생성합니다.

AWS KMW, 키 생성, 파트 1

키는 Identity Center 인스턴스와 동일한 AWS 리전 및 AWS 계정에 있어야 합니다. AWS Organization 내 조직 관리 계정에서 Identity Center 인스턴스와 키를 생성해야 합니다.

Identity Center 인스턴스와 같은 리전에 있는 AWS Key Management Service(AWS KMS) 콘솔로 이동한 다음 키 생성을 선택합니다. 그러면 키 생성 마법사가 시작됩니다.

AWS KMW, 키 생성, 파트 2

1단계 – 키 구성에서 대칭(암호화와 해독에 모두 사용되는 단일 키) 또는 비대칭(암호화와 해독 및 서명과 확인을 위한 퍼블릭 키 및 프라이빗 키 쌍) 중 하나의 키 유형을 선택합니다. Identity Center에는 저장 시 암호화를 위한 대칭 키가 필요합니다. 대칭을 선택합니다.

키 사용에서 데이터를 암호화하고 해독하는 데만 키를 사용할 수 있도록 암호화 및 해독을 선택합니다.

고급 옵션에서 키 구성 요소 원본KMS – 권장을 선택합니다. 그러면 AWS KMS에서 키 구성 요소를 생성하고 관리합니다.

리전 특성의 경우 단일 리전 키 또는 다중 리전 키 중에서 선택합니다. 키 관리자가 키를 다른 리전에 복제할 수 있도록 하려면 다중 리전 키를 선택합니다. 앞서 설명한 대로 Identity Center에는 현재 이 기능이 필요하지 않지만 향후 구성에 대비하는 데 도움이 됩니다. 키를 생성한 후 단일 리전 키를 다중 리전 키로 변환할 수 없습니다. 그러나 Identity Center에서 사용하는 키는 변경할 수 있습니다.

그리고 다음을 선택하여 레이블 추가, 관리 권한 정의, 사용 권한 설정, 키 생성 전 최종 구성 검토 등의 추가 구성 단계를 진행합니다.

AWS KMS, 키 생성, 파트 3

2단계 – 레이블 추가에서 키의 별칭 이름을 입력하고 다음을 선택합니다.

이 데모에서는 설명서에 제공된 템플릿을 사용하여 정책문을 추가해 키 정책을 편집합니다. 3단계와 4단계를 건너뛰고 5단계 – 키 정책 편집으로 이동합니다.

AWS KMS, 키 생성, 파트 5

Identity Center에는 최소한 Identity Center와 해당 관리자가 키를 사용할 수 있는 권한이 필요합니다. 따라서 세 가지 정책문을 추가합니다. 첫 번째와 두 번째는 서비스 관리자에게 권한을 부여하고 세 번째는 Identity Center 서비스 자체에 권한을 부여합니다.

{
	"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 관리형 애플리케이션 사용을 허용하려는 사용 사례를 위한 정책문도 더 추가해야 합니다. 이 두 가지 정책문을 추가하여 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)" }
   }
}

추가적으로 특정 Identity Center 인스턴스, 특정 애플리케이션 인스턴스 또는 특정 애플리케이션 관리자로 키 사용을 제한할 수 있습니다. 설명서에는 사용 사례에 대한 고급 키 정책 예제가 포함되어 있습니다.

권한 세트를 다시 생성할 때 IAM 역할 이름이 변경되지 않도록 보호하려면 사용자 지정 신뢰 정책 예제에서 설명하는 접근 방식을 사용합니다.

파트 2: 다른 AWS 계정에서 KMS 키를 사용할 수 있도록 IAM 정책 업데이트

다른 AWS 계정에서 Identity Center 서비스 API를 사용하는 모든 IAM 위탁자(예: Identity Center 위임 관리자 및 AWS 애플리케이션 관리자)에게는 이러한 API를 통해 KMS 키를 사용할 수 있도록 지원하는 IAM 정책문이 필요합니다.

새 정책을 생성하고 해당 정책을 사용 사례와 관련된 IAM 역할에 연결하여 키에 액세스할 수 있는 권한을 부여합니다. 또한 이러한 명령문을 IAM 역할의 기존 ID 기반 정책에 추가할 수 있습니다.

그러려면 키를 생성한 후 해당 ARN을 찾아 아래 템플릿에서 key_ARN을 바꿉니다. 그런 다음 정책을 관리형 애플리케이션 관리자 IAM 위탁자에게 연결합니다. 설명서에서는 Identity Center 위임 관리자에게 키에 액세스할 수 있는 권한을 부여하는 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 Identity Center 구성

Identity Center 조직 인스턴스를 활성화하는 동안 또는 기존 인스턴스에서 CMK를 구성할 수 있으며, CMK를 다른 CMK로 전환하거나 AWS 소유 키로 되돌려 언제든지 암호화 구성을 변경할 수 있습니다.

KMS 키 권한을 잘못 구성하면 Identity Center 운영과 Identity Center를 통한 AWS 관리형 애플리케이션 및 계정에 대한 액세스가 중단될 수 있습니다. 이 마지막 단계를 주의 깊게 진행하고 설명서를 읽고 이해했는지 확인하세요.

CMK를 생성하고 구성한 후에 Identity Center를 활성화할 때 고급 구성에서 CMK를 선택할 수 있습니다.

CMK 구성이 있는 IDC

AWS Management Console을 사용하여 기존 Identity Center 인스턴스에 CMK를 구성하려면 먼저 AWS Management Console의 Identity Center 섹션으로 이동합니다. 이 섹션의 탐색 창에서 설정을 선택하고 관리 탭을 선택한 다음 저장된 IAM Identity Center 데이터 암호화를 위한 키 섹션에서 암호화 관리를 선택합니다.

기존 IDC에서 키 변경

언제든지 동일한 AWS 계정에서 다른 CMK를 선택하거나 AWS 관리형 키로 다시 전환할 수 있습니다.

저장을 선택한 후 키 변경 프로세스를 완료하는 데 몇 초 정도 걸립니다. 전환 중에도 모든 서비스 기능이 중단되지 않고 계속됩니다. 어떤 이유로든 Identity Center에서 새 키에 액세스할 수 없는 경우 오류 메시지가 반환되고 Identity Center는 현재 키를 계속 사용하므로 ID 데이터는 이미 암호화된 메커니즘을 사용해 암호화된 상태로 유지됩니다.

IDC에서의 CMK, 새 키 선택

주의 사항
생성한 암호화 키는 Identity Center의 중요한 구성 요소가 됩니다. 자체 관리형 키를 사용하여 저장된 ID 속성을 암호화하려는 경우 다음 사항을 확인해야 합니다.

  • KMS 키를 사용하는 데 필요한 권한을 구성했나요? 적절한 권한이 없으면 CMK 활성화에 실패하거나 IAM Identity Center 관리 및 AWS 관리형 애플리케이션이 중단될 수 있습니다.
  • AWS 관리형 애플리케이션이 CMK 키와 호환되는지 확인했나요? 호환되는 애플리케이션 목록은 Identity Center와 함께 사용할 수 있는 AWS 관리형 애플리케이션을 참조하세요. CMK와 호환되지 않는 AWS 관리형 애플리케이션에서 사용하는 Identity Center에서 CMK를 활성화하면 해당 애플리케이션의 운영이 중단될 수 있습니다. 호환되지 않는 애플리케이션이 있으면 계속 진행하지 마세요.
  • 조직에서 Identity Center 및 Identity Store API를 사용하기 위해 추가 IAM 역할 구성이 필요한 AWS 관리형 애플리케이션을 사용하고 있나요? 각 AWS 관리형 애플리케이션이 이미 배포된 경우 관리형 애플리케이션의 사용 설명서에서 IAM Identity Center 사용 사례에 대한 업데이트된 KMS 키 권한을 확인하고 애플리케이션 중단을 방지하기 위해 지침에 따라 업데이트하세요.
  • 간략하게 설명하면, 이 게시물의 KMS 키 정책문에서는 암호화 컨텍스트를 생략함으로써 특정 인스턴스를 포함해 Identity Center로 KMS 키 사용을 제한할 수 있습니다. 프로덕션 시나리오의 경우 Identity Center에 다음과 같은 조건을 추가할 수 있습니다.
    "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 요금이 적용됩니다. Identity Center는 추가 비용 없이 계속 사용할 수 있습니다.

이 기능은 이제 모든 AWS 상용 리전, AWS GovCloud(미국) 및 AWS 중국 리전에서 사용할 수 있습니다. 자세한 내용은 IAM Identity Center 사용 설명서를 참조하세요.

이 새로운 기능을 사용하여 보안 및 규정 준수 요구 사항을 충족하는 방법을 확인할 수 있기를 바랍니다.

– seb