Microsoft Entra ID 연결
Microsoft Entra ID를 자격 증명 공급자로 연결해 사용자와 그룹 배정을 Kiro에 자동으로 동기화하는 방법을 안내합니다.
Microsoft Entra ID를 Kiro에 연결하는 데는 약 30~45분이 걸립니다. Entra 애플리케이션을 만들고, AWS 콘솔에서 Kiro 프로필을 구성한 뒤, SCIM 프로비저닝을 설정하면 사용자와 그룹 배정이 자동으로 동기화됩니다.
시작하기 전에 다음을 준비해 두세요.
- Microsoft Entra 관리 센터 (Application Administrator 이상 권한 필요)
- Kiro 관리자 권한이 있는 AWS Management Console
AWS 접근 권한은 Kiro 프로필을 관리하는 관리자에게만 필요합니다. 최종 사용자는 AWS 계정이 없어도 됩니다.
이 통합은 두 시스템을 연결합니다.
- Microsoft Entra ID — 자격 증명을 관리합니다. 어떤 사용자와 그룹이 Kiro에 접근할 수 있는지 여기서 정의합니다.
- Kiro 프로필 (AWS 콘솔) — 구독과 결제를 관리합니다.
SCIM 프로비저닝이 두 시스템을 연결합니다. Kiro에서 발급한 SCIM 엔드포인트와 토큰을 Entra에 입력하고, Entra의 Application (client) ID와 Directory (tenant) ID를 Kiro에 입력합니다.
1단계: Kiro용 애플리케이션 만들기
Microsoft Entra 관리 센터에 로그인한 뒤 Enterprise applications -> New application에서 새 애플리케이션을 만듭니다. Microsoft Entra App Gallery에서 "Create your own application"을 선택합니다.
예를 들어 Kiro-Entra처럼 알아보기 쉬운 이름을 지정합니다. 그런 다음 "What are you looking to do with your application?" 항목에서 "Integrate any other application you don't find in the gallery (Non-gallery)" 옵션을 선택하고 "Create"를 눌러 애플리케이션을 만듭니다.
2단계: Kiro 애플리케이션 구성
사용자 자격 증명이 Kiro 접근에 필요한 올바른 인가 정보를 제시할 수 있도록 애플리케이션을 구성합니다.
API 엔드포인트 노출
Kiro는 애플리케이션의 API 엔드포인트를 통해 사용자 자격 증명을 동기화합니다. "Kiro-Entra" 애플리케이션(App registrations -> All applications -> Kiro-Entra)에서 "Expose an API"를 선택하고, "Application ID URI" 필드 옆의 "Add"를 눌러 기본값을 저장합니다. 이어서 자격 증명이 Kiro에 제시해야 하는 권한을 정의하는 스코프 두 개를 추가합니다.
codewhisperer:completions는 인라인 코드 제안을, codewhisperer:conversations는 채팅을 활성화합니다.먼저 사용자에게 인라인 코드 자동 완성 접근 권한을 주는 첫 번째 스코프를 추가합니다.
- Scope Name: codewhisperer:completions
- Who can consent?: Admins and Users
- Admin consent display name: codewhisperer:completions
- Admin consent description: codewhisperer:completions
- State: Enabled
다음으로 사용자에게 채팅 접근 권한을 주는 두 번째 스코프를 추가합니다.
- Scope Name: codewhisperer:conversations
- Who can consent?: Admins and Users
- Admin consent display name: codewhisperer:conversations
- Admin consent description: codewhisperer:conversations
- State: Enabled
스코프 추가를 마치면 "Expose an API" 페이지에 두 스코프가 모두 표시됩니다.
리디렉션 URI 추가
리디렉션 URI는 인증이 끝난 뒤 Entra가 사용자를 보내고 토큰을 전달하는 위치입니다. Kiro 애플리케이션에서 "Authentication (Preview)"를 선택한 다음 "Add Redirect URI"를 누르고 "Mobile and desktop application" 플랫폼을 선택합니다.
리디렉션 URI 두 개 — "kiro://kiro.oauth/callback"과 "http://localhost/oauth/callback" — 를 추가하고, 각각 입력 후 Configure를 선택합니다.
Access Token 버전 설정
마지막으로 Kiro가 요청할 액세스 토큰 형식을 설정합니다. Entra ID는 기본적으로 v1 형식의 액세스 토큰을 발급하지만, Kiro는 v2 형식 토큰이 필요합니다. App Registration에서 왼쪽 탐색 메뉴의 Manifest를 선택합니다. api 섹션 아래의 requestedAccessTokenVersion 필드를 찾아 값을 2로 설정하고 Save를 선택합니다.
이 값들은 4단계에서 생성할 SCIM 엔드포인트, 액세스 토큰과 함께 Entra와 Kiro를 연결하는 핵심 자격 증명입니다.
| 값 | 출처 | 사용처 |
|---|---|---|
| Application (client) ID | Entra → App registrations → Overview | Kiro 프로필 생성 |
| Directory (tenant) ID | Entra → App registrations → Overview | Kiro 프로필 생성 |
| SCIM Endpoint | Kiro → Settings → Identity Management | Entra 프로비저닝 구성 |
| Access Token | Kiro → Settings → Identity Management → Access Tokens | Entra 프로비저닝 구성 |
이제 Kiro 프로필을 설정할 준비가 되었습니다.
3단계: Kiro 프로필 설정
Kiro 프로필을 설정하고 Microsoft Entra ID IdP에 연결하는 과정은 두 단계로 이루어집니다.
- Kiro에서 Microsoft Entra ID 애플리케이션 정보를 구성
- Kiro에서 도메인을 추가하고 검증
Kiro 프로필 생성
AWS Management Console에서 Kiro를 검색해 Kiro 서비스를 엽니다. Onboard your team to Kiro를 선택합니다. Select your identity management source 대화 상자에서 기존 외부 자격 증명 공급자를 연결하기 위해 External Identity Provider를 선택한 뒤 Next를 누릅니다.
Welcome to Kiro! 대화 상자에서 드롭다운으로 자격 증명 공급자를 선택합니다. 현재 지원되는 공급자는 Microsoft Entra ID와 Okta입니다. Microsoft Entra ID를 선택하면 대화 상자에 Application ID와 Tenant ID 필드가 나타나며, 여기에 Entra 애플리케이션의 값을 입력합니다.
해당 값을 찾으려면 Microsoft Entra에서 App registrations -> All applications -> Kiro-Entra로 이동합니다. "Overview" 탭이 열립니다.
먼저 Application (client) ID 필드 값을 복사해 만들고 있는 Kiro 프로필의 Application ID 필드에 붙여넣습니다. Directory (tenant) ID는 Kiro 프로필의 Tenant ID 필드에 복사한 뒤 Enable을 선택해 프로필을 생성합니다.
외부 자격 증명 공급자의 데이터를 암호화하기 위해 고객 관리형 KMS 키를 구성했다면, Kiro가 SCIM으로 프로비저닝된 사용자와 그룹에 접근할 수 있도록 키 정책에 다음 문(statement)을 추가해야 합니다.
{
"Sid": "AllowKiroToUseKey",
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKeyWithoutPlaintext",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "AllowIdentityStoreToUseKey",
"Effect": "Allow",
"Principal": {
"Service": "identitystore.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GenerateDataKeyWithoutPlaintext",
"kms:ReEncryptTo",
"kms:DescribeKey",
"kms:ReEncryptFrom"
],
"Resource": "*"
}
도메인 추가 및 검증
"Settings" 버튼을 선택하고 Identity management -> Domains 섹션에서 "Add domain"을 눌러 회사 도메인을 추가합니다.
"Add"를 선택하면 도메인이 추가되고 검증 토큰이 표시됩니다. 검증 토큰을 복사하세요. 추가한 도메인은 Domains 목록에 "Pending" 상태로 나타납니다.
Amazon Route53 같은 DNS 공급자에서 도메인을 추가한 뒤 24시간 이내에 그 검증 토큰으로 TXT 레코드를 생성합니다. 레코드 이름에는 kiro-app-1 같은 접두사를 사용합니다(예: kiro-app-1.yourdomain.com).
구성이 유효하면 몇 분 뒤 상태가 "Verified"로 바뀝니다.
.local, .internal, 커스텀 사설 TLD)는 지원되지 않습니다. 이러한 도메인은 공개 DNS 조회에서 NXDOMAIN을 반환하며, 도메인이 무기한 "Pending" 상태로 남습니다.사설 또는 내부 도메인에 대한 우회 방법
조직이 인프라에 사설 또는 내부 도메인을 사용한다면 다음 방법 중 하나를 사용하세요.
- 여러분이 통제하는 공개 확인 가능한 도메인 또는 서브도메인을 검증합니다. 공개 DNS에서 확인되는 도메인(또는 서브도메인)에 TXT 레코드를 추가하고, 사설 도메인 대신 그 도메인을 검증합니다.
- 사용자가 로그인에 사용하는 공개 도메인을 등록합니다. 사용자가 공개 도메인의 이메일 주소로 로그인한다면 그 공개 도메인을 Kiro 프로필에 추가합니다. 사용자가 (공개 도메인의) 이메일을 입력하고 로그인을 선택하면, 내부 인프라 도메인과 무관하게 Kiro가 사용자를 Entra ID 로그인 페이지로 리디렉션합니다.
4단계: Kiro 애플리케이션 프로비저닝
이 단계에서는 Kiro 애플리케이션을 프로비저닝하고, Kiro가 Entra ID 자격 증명 저장소에서 자격 증명을 동기화할 수 있는지 확인합니다.
프로비저닝 설정
Kiro 콘솔에서 — Settings → Identity Management로 이동합니다. Access Tokens 섹션에서 Generate Token을 선택해 토큰 값을 복사한 뒤, 같은 페이지에서 SCIM Endpoint URL을 복사합니다.
Entra 관리 센터에서 — Enterprise Apps → Kiro-Entra → Provisioning으로 이동합니다. 사이드바에서 Provisioning 링크를 선택한 뒤 Provisioning Mode를 Automatic으로 설정합니다.
- SCIM 엔드포인트를 Tenant URL 필드에 붙여넣습니다.
- 액세스 토큰을 Secret Token 필드에 붙여넣습니다.
Test Connection을 선택해 검증합니다. 성공하면 Save를 선택합니다. Provisioning Status 토글이 있다면 On으로 설정합니다.
저장한 뒤에는 Entra ID 애플리케이션 페이지를 새로 고침하세요. 새로 고치기 전에는 속성 매핑 링크가 나타나지 않습니다.
속성 매핑 추가
사이드바 링크가 활성화되면 "Attribute mapping (Preview)" 섹션을 엽니다. Provision Groups와 Provision Users가 모두 활성화되어 있어야 합니다.
"Provision Microsoft Entra ID Users" 링크를 선택해 "Attribute Mapping" 페이지를 엽니다. "externalId" 속성의 "Edit" 버튼을 선택해 "Edit Attribute" 페이지를 열고, Source attribute 값을 "objectId"로 설정한 뒤 구성을 저장합니다. "objectId"는 사용자나 그룹을 고유하게 식별하며 변경되지 않으므로, Kiro가 사용자/그룹을 식별하고 동기화하기 쉽습니다.
지원되지 않는 속성 제거
Entra는 Kiro의 SCIM 엔드포인트가 지원하지 않는 여러 속성을 자동으로 채웁니다. 그대로 두면 프로비저닝이 실패합니다. 속성 매핑 표에서 다음 항목을 삭제하세요.
Enterprise User Extension 속성(삭제):
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumberurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:departmenturn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager
전화번호 속성(삭제):
phoneNumbers[type eq "work"].valuephoneNumbers[type eq "mobile"].valuephoneNumbers[type eq "fax"].value
각 속성 행을 선택하고 Delete를 선택합니다. 완료되면 매핑을 저장합니다.
userName, externalId, active 세 가지뿐이며, 나머지 속성 매핑은 모두 삭제해 문제를 좁힐 수 있습니다.5단계: 사용자 및 그룹 추가
Entra 애플리케이션에서 Kiro로 동기화할 사용자와 그룹을 선택합니다. 선택된 사용자와 그룹은 Kiro 프로필에서 Kiro 구독과 연결할 수 있게 됩니다.
Entra 관리 센터에서 Kiro 애플리케이션 → Users and groups로 이동해 + Add user/group을 선택합니다. Kiro 접근이 필요한 그룹(또는 개별 사용자)을 배정합니다.
자동으로 프로비저닝된 사용자와 그룹을 보려면 Entra ID 애플리케이션의 "Users and groups" 섹션으로 이동합니다. 사용자와 그룹이 저절로 나타나기까지는 시간이 걸릴 수 있습니다. 프로비저닝 진행 상황을 추적하려면 Entra 문서를 참고하세요.
수동으로 프로비저닝하려면 "Provisioning" 페이지로 이동해 "Quick Actions" 섹션 아래의 "Provision On Demand"를 선택합니다.
그룹을 프로비저닝하는 경우 그룹의 모든 사용자를 선택했는지 확인하세요. 그룹과 그 안의 사용자를 성공적으로 구성하면 성공 화면이 표시됩니다.
동기화하려는 모든 사용자와 그룹에 대해 위 단계를 반복합니다.
이것으로 Microsoft Entra ID의 모든 구성 단계를 마쳤습니다.
Kiro 콘솔에 사용자가 나타나면 구독 가이드를 따라 활성화하세요.
보안 고려 사항
세션 관리
- Kiro는 OIDC 리프레시 토큰으로 사용자 세션을 유지합니다. 세션이 만료되면 리프레시 토큰이 그 자체가 만료될 때까지 Kiro 세션을 독립적으로 유지합니다.
- Kiro 콘솔에서는 활성 사용자 세션을 강제로 취소할 수 없습니다. 접근을 제거하려면 Entra 애플리케이션에서 사용자를 제거해야 하며, 다음 토큰 갱신 시도 시점에 접근이 취소됩니다.
- Enterprise apps > 애플리케이션 > Users and Groups로 이동해 사용자를 선택한 뒤 배정을 제거합니다.
리디렉션 URI 보안
- 이 가이드에 명시된 리디렉션 URI만 추가하세요.
프로필 삭제 경고
프로비저닝 후 Kiro 프로필을 삭제하고 동일한 Entra 애플리케이션으로 새 프로필을 만들면 그룹 멤버십이 동기화되지 않습니다. 애플리케이션을 처음부터 다시 프로비저닝해야 합니다.
승인되지 않은 접근 방지
- Entra의 Kiro 애플리케이션에 어떤 사용자도 직접 추가하지 마세요.
- 해당 사용자가 Kiro 애플리케이션에 배정된 어떤 그룹의 멤버도 아닌지 확인하세요.
- 그룹 기반 구독을 만든 뒤에는 Kiro 콘솔의 Subscriptions 탭을 확인해 의도하지 않은 사용자가 구독을 받지 않았는지 검토하세요.
사용자 제거 및 디프로비저닝 동작
- Entra의 Kiro 애플리케이션에서 사용자 배정을 제거합니다. 이렇게 하면 이후 모든 로그인 시도가 차단됩니다.
- 기존 세션은 다음 토큰 갱신이 시도될 때까지 활성 상태로 유지되며, 그 시점에 접근이 취소됩니다. 활성 세션이 즉시 종료되지는 않습니다.
- 구독 제거는 자동으로 이루어지지 않습니다. Entra 애플리케이션에서 사용자를 제거한 뒤에는 좌석을 반환하기 위해 Kiro 콘솔에서 해당 사용자의 구독을 직접 삭제해야 합니다.
그룹 멤버십 동기화 동작
- Kiro는 전적으로 Entra에서 오는 푸시 기반 SCIM 동기화에 의존합니다. Kiro가 Entra에 풀(pull)을 요청할 수는 없습니다.
- 그룹 멤버십 변경은 약 40분마다 푸시됩니다. 관리자는 Entra 콘솔에서 "Provision on Demand"를 사용해 즉시 동기화를 트리거할 수 있습니다.
- SCIM 프로비저닝은 새 추가뿐 아니라 Entra의 모든 사용자 또는 그룹 업데이트에서 트리거됩니다. 기존 사용자나 그룹을 편집해도 동기화가 푸시됩니다.
문제 해결
| 누락된 단계 | 어떻게 나타나는가 | 해결 방법 | 비고 |
|---|---|---|---|
| Manifest에서 액세스 토큰 버전을 2로 설정하지 않음 | 로그인 후 API 호출이 인가 오류로 실패 | App registrations에서 Manifest를 편집해 api.requestedAccessTokenVersion을 2로 설정 | Entra는 기본적으로 v1 액세스 토큰을 사용하지만 Kiro는 v2가 필요 |
| Expose an API에서 스코프를 설정하지 않음 | 로그인 화면에 오류가 표시됨 | Expose an API에서 codewhisperer:completions와 codewhisperer:conversations 스코프를 추가 | 두 스코프 모두 필요 |
| 프로비저닝에서 속성 매핑을 설정하지 않음 | 로그인 후 사용자에게 구독이 없음(API 호출 실패) | Attribute Mapping에서 externalId source 속성을 objectId로 설정. 모든 구독을 삭제하고 다시 프로비저닝 | objectId는 안정적인 고유 식별자 |
| 리디렉션 URI를 설정하지 않음 | 로그인 시도 시 오류 화면이 표시됨 | Authentication 설정에서 필요한 localhost 리디렉션 URI를 추가 | 전체 포트 목록은 설정 가이드 참고 |
| Provision on Demand를 실행하지 않음 | 사용자/그룹이 Kiro 콘솔에 나타나지 않음 | Provisioning으로 이동해 "Provision on Demand"를 선택 | 자동 동기화는 최대 40분 소요 |
| 프로비저닝 후 프로필을 삭제하고 동일한 앱으로 새 프로필을 생성 | 그룹 멤버십이 동기화되지 않음 | 새 SCIM 토큰으로 애플리케이션을 처음부터 다시 프로비저닝 | 위 "프로필 삭제 경고" 참고 |
| 도메인 검증에 사설 또는 내부 TLD를 사용 | 도메인이 "Pending" 상태로 남고 검증되지 않음 | 공개 확인 가능한 도메인 또는 서브도메인을 대신 검증하거나, 사용자가 로그인에 사용하는 공개 이메일 도메인을 등록 | 검증은 공개 DNS 조회를 수행하며 사설 TLD는 NXDOMAIN을 반환 |
관련 자료
- 팀 구독 — 프로비저닝 후 사용자 활성화
- IAM 권한 — 프로필 관리에 필요한 AWS 권한
- Microsoft Entra 프로비저닝 문서 — 프로비저닝 진행 상황 추적