Okta IdP 연결하기

Okta를 자격 증명 공급자로 사용해 Kiro Profile과 연결하고, 사용자·그룹을 프로비저닝하는 방법을 안내합니다.

Okta를 Kiro Profile과 연결하려면 다음 작업이 필요합니다.

  1. OIDC Okta 애플리케이션 생성
  2. OIDC 애플리케이션의 사용자 지정 스코프 설정
  3. Kiro Profile 설정
  4. SCIM 프로비저닝 애플리케이션 생성
주의: Okta를 Kiro와 연결하려면 DNS 공급자에 TXT 레코드를 추가해 회사 도메인 소유권을 검증해야 합니다. 이를 통해 권한이 없는 제3자가 여러분의 도메인을 자신의 Kiro Profile에 연결하고 사용자 로그인을 가로채는 것을 방지할 수 있습니다.

애플리케이션이 두 개 필요한 이유

Okta를 사용할 때는 애플리케이션을 두 개 만들어야 합니다. 하나는 사용자 로그인을 위한 OIDC 애플리케이션이고, 다른 하나는 사용자와 그룹을 Kiro로 동기화하기 위한 SCIM 프로비저닝 애플리케이션(Okta App Catalog의 AWS IAM Identity Center 통합 사용)입니다.

1단계: OIDC 애플리케이션 생성

새 앱 통합 생성

Okta Admin Console에서 Applications -> Applications 섹션으로 이동해 "Create App integration"을 선택합니다. "Sign-in method"로 "OIDC - OpenID Connect"를, Application type으로 "Native Application"을 선택합니다.

애플리케이션에 Kiro-OIDC처럼 알아보기 쉬운 이름을 지정하고, "Grant type" 필드에서 "Refresh Token" 체크박스를 선택합니다. 나머지 필드는 기본값을 그대로 둡니다.

먼저 kiro://kiro.oauth/callback을 Sign-in redirect URI로 추가합니다. 이는 Okta 로그인 성공 후 사용자를 되돌려 보낼 때 Kiro 클라이언트가 수신 대기하는 URI 중 하나입니다.

다음으로 http://localhost:<port-number>/oauth/callback 형식의 Sign-in redirect URI 10개를 추가로 등록합니다. 이때 port-number는 다음 포트 번호 중 하나입니다 — 3128, 4649, 6588, 8008, 9091, 49153, 50153, 51153, 52153, 53153.

"Skip group assignment for now"가 선택되어 있는지 확인한 뒤 "Save"를 선택해 애플리케이션 생성을 완료합니다. 새로 만든 애플리케이션의 세부 정보가 표시됩니다.

사용자 및 그룹 추가

다음으로 애플리케이션에 포함될 사용자와 그룹을 추가합니다. "Assignments" 탭을 선택하고 "Assign" 버튼을 눌러 안내에 따라 Kiro에 접근해야 하는 사용자와 그룹을 추가합니다.

이로써 OIDC 애플리케이션 생성이 완료되었습니다.

2단계: 사용자 지정 스코프 설정

Kiro 전용 스코프 생성

OIDC 애플리케이션을 만들었으니, 이제 사용자 자격 증명이 Kiro에 접근할 올바른 권한을 제시할 수 있도록 스코프를 설정합니다. completions와 conversations, 두 개의 스코프를 설정합니다.

스코프별 권한

조직에 필요한 스코프만 부여하세요. 접근 정책을 구성할 때 각 스코프가 미치는 영향을 이해해야 합니다.

Okta Admin Console에서 Security -> API 섹션으로 이동합니다. "Authorization Servers" 탭에서 "Add Authorization Server" 버튼을 선택합니다.

Authorization Server의 이름과 설명을 입력합니다. "Save"를 선택해 서버 추가를 완료합니다.

"Scopes" 탭을 선택하고 "Add Scope" 버튼을 눌러 Kiro 기능 접근을 허용하는 스코프를 추가합니다.

먼저 codewhisperer:completions 스코프를 추가하고 "User consent" 값을 "Implicit"으로 설정합니다. 나머지 필드는 기본값으로 둡니다. "Create"를 선택해 스코프를 추가합니다.

동일한 단계로 codewhisperer:conversations 스코프도 추가합니다.

접근 정책 추가

다음으로 Authorization Server에 접근 정책과 규칙을 추가해, Kiro OIDC 애플리케이션을 통해 Kiro가 접근할 수 있는 대상을 제어합니다.

"Access Policies" 탭을 선택하고 "Add Policy" 버튼을 선택합니다.

정책에 알아보기 쉬운 이름을 지정하고, 앞서 만든 Kiro OIDC 애플리케이션(Kiro-OIDC)에 정책을 할당합니다.

정책이 생성되면 새로 만든 정책에 대해 "Add rule"을 선택합니다.

"Scopes requested"를 제외한 모든 필드는 기본값으로 둡니다. "The following scopes:" 옵션을 선택하고 codewhisperer:completions, codewhisperer:conversations, offline_access 스코프를 추가합니다. "Create rule"을 선택해 규칙 추가를 완료합니다.

팁: offline_access 스코프는 액세스 토큰이 만료될 때마다 사용자가 재인증하지 않아도 되도록, Kiro가 리프레시 토큰을 사용해 사용자 세션을 유지할 수 있게 해 줍니다.

마지막으로 구성을 테스트합니다. "Token Preview" 탭을 선택합니다. "OAuth/OIDC client" 필드에서 Kiro용으로 만든 OIDC 애플리케이션(예: Kiro-OIDC)을 선택하고, "Grant type"으로 "Authorization Code"를 선택한 뒤, "Scopes" 필드에서 두 개의 codewhisperer 스코프와 offline_access를 선택합니다. "Preview Token" 버튼을 선택했을 때 구성이 유효하면, "Preview" 패널의 Payload 섹션에 값이 채워진 iss 속성이 표시되고 scp 속성에 선택한 세 개의 스코프가 포함됩니다.

이로써 Okta에서 애플리케이션을 구성하는 데 필요한 모든 단계를 완료했습니다. 이제 Kiro Profile을 만들고 사용자와 그룹을 구독시킬 수 있습니다.

3단계: Kiro Profile 설정

Kiro Profile 생성

Kiro 콘솔에서 "Sign up for Kiro"를 선택하고 "Set up application as Admin"을 선택합니다. "Connect an existing external Identity provider" 옵션을 선택합니다.

Okta Admin Console에서 Security -> API 섹션으로 이동해 Kiro용으로 만든 Authorization Server를 선택합니다.

방금 설정한 애플리케이션의 Issuer URI 값을 복사해 Kiro Profile의 Issuer URI 필드에 붙여 넣습니다.

Okta Admin Console에서 Applications 섹션으로 이동해 Kiro 통합용으로 만든 OIDC 애플리케이션(예: Kiro-OIDC)을 엽니다. Client ID 값을 복사해 Kiro Profile의 Client ID 필드에 붙여 넣습니다.

"Enable"을 선택해 Kiro Profile 생성을 완료합니다.

외부 자격 증명 공급자의 데이터를 암호화하기 위해 고객 관리형 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": "*"
}

도메인 추가 및 검증

Kiro 콘솔에서 "Settings" 버튼을 선택하고 Identity management -> Domains 섹션에서 "Add domain"을 선택해 회사 도메인을 추가합니다.

"Add"를 선택하면 도메인이 추가되고 검증 토큰이 표시됩니다. 검증 토큰을 복사합니다. 추가된 도메인은 Domains 목록에 "Pending" 상태로 나타납니다.

Amazon Route 53와 같은 DNS 공급자에서 해당 검증 토큰으로 TXT 레코드를 생성합니다.

구성이 유효하면 몇 분 후 상태가 "Verified"로 바뀝니다.

팁: Kiro는 검증 상태와 관계없이 하나의 도메인이 둘 이상의 Profile에 연결되는 것을 허용하지 않습니다. 따라서 제3자가 자신의 Profile에 여러분의 도메인을 추가하려 시도하고, 그 거부 결과를 근거로 해당 도메인이 이미 다른 Kiro Profile에 연결되어 있음을 추론할 수 있습니다. 이는 어떠한 접근 권한도 부여하지 않지만, 해당 도메인이 Kiro에 온보딩되었다는 사실은 드러납니다.

SCIM 액세스 토큰 추가

Kiro 콘솔에서 Settings → Identity Management → Access Tokens로 이동해 "Generate Token"을 선택하고 SCIM 프로비저닝용 액세스 토큰을 생성합니다. 이 토큰을 복사해 두세요. 4단계에서 SCIM 프로비저닝 애플리케이션을 구성할 때 필요합니다.

주의: SCIM 프로비저닝용으로 생성된 액세스 토큰은 수명이 긴 자격 증명입니다. 비밀번호와 동일한 수준으로 신중하게 관리하세요.
  • SCIM 토큰은 자동으로 교체되지 않습니다. 조직의 자격 증명 교체 정책에 따라 수동으로 교체해야 합니다.
  • 토큰이 유출된 경우, Kiro 관리 콘솔(Settings → Identity Management → Access Tokens)의 revoke 버튼으로 즉시 취소한 뒤 새 토큰을 생성하고 Okta의 프로비저닝 구성에 업데이트하세요.

4단계: SCIM 프로비저닝 애플리케이션 생성

앱 통합 생성

다음으로 SCIM 프로비저닝 애플리케이션을 만들고 사용자와 그룹을 구성합니다.

Okta Admin Console에서 Applications -> Applications 섹션으로 이동해 "Browse App Catalog"를 선택합니다. "AWS IAM Identity Center"를 검색하고 "Add Integration"을 선택합니다.

"Application label" 값이 "AWS IAM Identity Center"로 지정된 채 "General Settings" 탭이 열린 새 애플리케이션이 추가됩니다. 기본값을 그대로 두거나 레이블을 변경한 뒤 "Done"을 선택합니다.

이제 새로 만든 애플리케이션의 세부 정보가 표시됩니다. "Sign On" 탭의 SAML 설정(ACS URL, Issuer URL)은 기본값으로 두어도 됩니다. Kiro는 로그인에 SAML이 아니라 OIDC 앱을 사용합니다.

SCIM 프로비저닝 구성

다음으로 프로비저닝을 구성합니다. "Provisioning" 탭을 선택한 뒤 "Integration" 섹션을 선택합니다. 프로비저닝이 활성화되지 않았다는 메시지가 표시됩니다. "Configure API integration" 버튼을 선택해 프로비저닝 과정을 시작합니다.

"Enable API integration"을 체크합니다. 그러면 구성할 추가 필드가 표시됩니다.

그룹 동기화

Okta에서 Kiro로 그룹을 푸시하려면 다음 지침을 따르세요.

사전 준비

그룹을 추가하기 전에 "department"와 "employeeNumber" 두 속성을 제거합니다. 앞서 만든 "AWS IAM Identity Center" 앱을 선택하고 "Provisioning" 탭에서 "To App"을 선택합니다. AWS IAM Identity Center Attribute Mappings 섹션까지 스크롤해 두 속성을 제거합니다.

먼저 동기화할 그룹을 할당합니다. "Assignments" 탭을 선택하고 "Assign" 버튼을 누른 뒤 "Assign to Groups" 옵션을 선택합니다. 사용 가능한 그룹 목록에서 동기화할 각 그룹의 "Assign"을 선택하고 안내에 따릅니다.

다음으로 그룹 동기화를 설정합니다.

팁: 이미 Kiro 구독이 있는 그룹에 사용자를 추가하는 경우, 새 그룹 멤버십이 전파되기까지 최대 24시간이 걸릴 수 있습니다. 사용자가 그룹에 추가된 시점과 Kiro 구독 콘솔에서 해당 사용자의 구독이 활성화되는 시점 사이에 지연이 있을 수 있습니다.

이로써 Okta에서 애플리케이션을 구성하고, 애플리케이션을 Kiro Profile과 연결하며, Profile에 사용자·그룹을 추가하는 데 필요한 모든 단계를 완료했습니다.

주의: 위 단계를 완료하면 사용자가 로그인할 수 있지만, 구독을 추가하기 전까지는 Kiro 모델을 사용할 수 없습니다. 팀 구독 가이드에 따라 팀 구성원의 구독을 활성화하세요.

보안 고려 사항

세션 관리

리디렉션 URI 보안

Profile 삭제 경고

프로비저닝 후 Kiro Profile을 삭제하고 동일한 Okta 애플리케이션으로 새 Profile을 만들면 그룹 멤버십이 동기화되지 않습니다. 애플리케이션을 처음부터 다시 프로비저닝해야 합니다.

무단 접근 방지

사용자 제거 및 프로비저닝 해제 동작

그룹 멤버십 동기화 동작

문제 해결

누락한 단계증상해결 방법참고
OIDC 앱에 사용자를 추가하지 않음 사용자가 로그인할 수 없음 OIDC 애플리케이션의 Assignments 탭에서 사용자를 추가합니다. 사용자는 OIDC 애플리케이션과 SCIM 프로비저닝 애플리케이션 모두에 있어야 합니다.
사용자 생성을 위한 프로비저닝을 활성화하지 않음 사용자가 Kiro로 동기화되지 않음 SCIM 프로비저닝 앱에서 Provisioning > To App으로 이동해 "Create Users"를 활성화합니다. "Update User Attributes"도 함께 활성화하세요.