awskms KMS
awskms KMS
AWS KMS는 키 관리를 위해 Boundary가 AWS KMS를 사용하도록 구성해요.
본문
AWS KMS는 키 관리를 위해 Boundary가 AWS KMS를 사용하도록 구성해요.
awskms 예시
이 예시는 필요한 모든 값을 제공해 Boundary 구성 파일을 통해 AWS KMS를 구성하는 방법을 보여줘요.
kms "awskms" {
purpose = "root"
region = "us-east-1"
access_key = "«redacted:AKIA…»"
secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
kms_key_id = "19ec80b0-dfdd-4d97-8164-c6examplekey"
endpoint = "https://vpce-0e1bb1852241f8cc6-pzi0do8n.kms.us-east-1.vpce.amazonaws.com"
key_id = "global_worker-auth"
}
awskms 파라미터
이 파라미터들은 Boundary 구성 파일의 kms 스탠자에 적용돼요.
purpose— 이 KMS의 목적이에요. 허용되는 값은bsr,config,downstream-worker-auth,previous-root,recovery,root,worker-auth,worker-auth-storage예요. 세션 녹화를 활성화하려면purpose에bsr값을 구성해야 해요. 지원되는 KMS purpose에 대한 자세한 내용은 Data encryption in Boundary를 참고하세요.region(string: "us-east-1") — 암호화 키가 있는 AWS 지역이에요. 제공하지 않으면AWS_REGION또는AWS_DEFAULT_REGION환경 변수,~/.aws/config파일, 또는 인스턴스 메타데이터에서 채워질 수 있어요.kms_key_id(string: <required>) — 암호화와 복호화에 사용할 AWS KMS 키 ID예요.AWSKMS_WRAPPER_KEY_ID환경 변수로도 지정할 수 있어요.access_key(string: "") — 사용할 AWS 액세스 키 ID예요.AWS_ACCESS_KEY_ID환경 변수나, AWS CLI 또는 인스턴스 프로파일의 AWS 프로파일 일부로도 지정할 수 있어요.session_token(string: "") — AWS 세션 토큰을 지정해요.AWS_SESSION_TOKEN환경 변수로도 제공할 수 있어요.secret_key(string: "") — 사용할 AWS 시크릿 액세스 키예요.AWS_SECRET_ACCESS_KEY환경 변수나, AWS CLI 또는 인스턴스 프로파일의 AWS 프로파일 일부로도 지정할 수 있어요.shared_creds_filename(string: "") — 설정하면 공유 자격 증명 파일로 읽을 파일 이름이에요.shared_creds_profile(string: "") — 설정하면 공유 자격 증명 파일에서 사용할 프로파일이에요. 설정하지 않으면AWS_PROFILE환경 변수를 사용하고, 그것도 없으면"default"를 사용해요.role_arn(string: "") — 이것과web_identity_token_file이 설정되면, STS와 함께 웹 ID 역할 제공자를 사용할 때 사용할 역할 ARN이에요.web_identity_token_file(string: "") — 이것과role_arn이 설정되면, STS와 함께 웹 ID 역할 제공자를 사용할 때 사용할 토큰 파일이에요.role_session_name(string: "") — 웹 ID 역할 제공자를 사용한다면 사용할 역할 세션이에요.endpoint(string: "") — AWS KMS 요청을 보내는 데 사용할 KMS API 엔드포인트예요.AWS_KMS_ENDPOINT환경 변수로도 지정할 수 있어요. 예를 들어 VPC Endpoint를 통해 KMS에 연결할 때 유용해요. 설정하지 않으면 Boundary는 지역의 기본 API 엔드포인트를 사용해요.key_id— 이 키의 고유한 이름이에요. 루트 키 마이그레이션을 수행할 때 키를 식별하는 데 사용돼요.key_id필드는 모든 KMS 스탠자에서 사용할 수 있어요.
인증
인증 관련 값은 환경 변수나 구성 파라미터로 제공해야 해요.
Note: 구성 파일에서 KMS의 파라미터로
AWS_ACCESS_KEY_ID와AWS_SECRET_ACCESS_KEY를 전달할 수는 있지만, 이 값들은 환경 변수로 설정하는 것을 강력히 권장해요.
AWS 인증 값:
AWS_REGION또는AWS_DEFAULT_REGIONAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
Note: 클라이언트는 공식 AWS SDK를 사용하며, 위 AWS 특정 값들이 제공되지 않으면 지정된 자격 증명, 환경 자격 증명, 공유 파일 자격 증명, IAM 역할/ECS 태스크 자격 증명 순서로 사용해요.
Boundary는 KMS 키에 다음 권한이 필요해요.
kms:Encryptkms:Decryptkms:DescribeKey
이들은 Boundary가 사용하는 주체(principal)에 대한 IAM 권한, KMS 키의 키 정책, 또는 키의 KMS Grants를 통해 부여할 수 있어요.
키 순환(Key rotation)
이 KMS는 AWS KMS에 정의된 마스터 키 순환을 지원해요. 키 정보가 암호화된 데이터와 함께 저장되므로 KMS의 자동 순환과 수동 순환을 모두 지원해요. 이전 키는 비활성화하거나 삭제하면 안 되며, 이전 데이터의 복호화에 사용돼요. 새 데이터나 갱신된 데이터는 KMS 구성에 정의된 현재 키, 또는 키 별칭(alias) 아래에서 현재로 설정된 키로 암호화돼요.