TIP 플러그인을 사용하여 AWS 서비스에 액세스
신뢰할 수 있는 ID 전파(TIP)는 AWS 서비스 관리자가 그룹 소속과 같은 사용자 속성에 기반하여 권한을 부여할 수 있도록 해주는 AWS IAM Identity Center의 기능입니다. ID 컨텍스트는 신뢰할 수 있는 ID 전파를 통해 IAM 역할에 추가되어 AWS 리소스에 대한 액세스를 요청하는 사용자를 식별합니다. 이 컨텍스트는 다른 AWS 서비스에 전파됩니다.
ID 컨텍스트는 AWS 서비스가 액세스 요청을 받을 때 권한 부여 결정을 내리기 위해 사용하는 정보를 의미합니다. 이 정보에는 요청자(예: IAM Identity Center 사용자), 액세스가 요청된 AWS 서비스(예: Amazon Redshift), 액세스 범위(예: 읽기 전용 액세스)를 식별하는 메타데이터가 포함됩니다. 수신하는 AWS 서비스는 이 컨텍스트와 함께 사용자에게 할당된 모든 권한을 사용하여 리소스에 대한 액세스를 승인합니다. 자세한 내용은 AWS IAM Identity Center 사용 설명서의 신뢰할 수 있는 ID 전파를 참조하세요.
TIP 플러그인은 신뢰할 수 있는 ID 전파를 지원하는 AWS 서비스와 함께 사용할 수 있습니다. 참조 사용 사례로는 Amazon Q Business 사용 설명서의 Configuring an Amazon Q Business application using AWS IAM Identity Center를 참고하세요.
참고
Amazon Q Business를 사용하는 경우, 서비스별 지침은 Configuring an Amazon Q Business application using AWS IAM Identity Center를 참고하세요.
TIP 플러그인을 사용하기 위한 사전 조건
플러그인이 작동하려면 다음 리소스가 필요합니다.
-
AWS SDK for Java 또는 AWS SDK for JavaScript 중 하나를 사용해야 합니다.
-
사용 중인 서비스가 신뢰할 수 있는 ID 전파를 지원하는지 확인합니다.
자세한 내용은 AWS IAM Identity Center 사용 설명서에 있는 ‘IAM Identity Center와 통합되는 AWS 관리형 애플리케이션 표의 IAM Identity Center 를 통해 신뢰할 수 있는 ID 전파 활성화 열을 참고하세요.
-
IAM Identity Center와 신뢰할 수 있는 ID 전파(TIP)를 활성화하세요.
AWS IAM Identity Center 사용 설명서의 TIP 필수 조건 및 고려 사항을 참조하세요.
-
Identity Center와 통합된 애플리케이션이 있어야 합니다.
AWS IAM Identity Center 사용 설명서의 AWS 관리형 애플리케이션 또는 고객 관리형 애플리케이션을 참조하세요.
-
신뢰할 수 있는 토큰 발급자(TTI)를 설정하고 서비스를 IAM Identity Center에 연결해야 합니다.
AWS IAM Identity Center 사용 설명서의 신뢰할 수 있는 토큰 발급자의 사전 조건 및 신뢰할 수 있는 토큰 발급자 설정 작업을 참조하세요.
코드에서 TIP 플러그인 사용
-
신뢰할 수 있는 ID 전파 플러그인의 인스턴스를 생성합니다.
-
AWS 서비스와 상호 작용하기 위한 서비스 클라이언트 인스턴스를 생성하고 신뢰할 수 있는 ID 전파 플러그인을 추가하여 서비스 클라이언트를 사용자 지정합니다.
TIP 플러그인은 다음 입력 매개변수를 사용합니다.
-
webTokenProvider: 고객이 외부 ID 제공업체로부터 OpenID 토큰을 얻기 위해 구현하는 함수입니다. -
accessRoleArn: ID 강화 자격 증명을 가져오기 위해 사용자의 ID 컨텍스트와 함께 플러그인에서 수임할 IAM 역할 ARN입니다. -
applicationArn: 클라이언트 또는 애플리케이션의 고유 식별자 문자열입니다. 이 값은 OAuth 권한이 구성된 애플리케이션 ARN입니다. -
ssoOidcClient: (선택 사항) Java용SsoOidcClient또는 JavaScript용 client-sso-oidc와 같은 SSO OIDC 클라이언트로, 사용자가 정의한 구성을 포함할 수 있습니다. 제공되지 않으면applicationRoleArn을 사용하는 OIDC 클라이언트가 인스턴스화되고 사용됩니다. -
stsClient: (선택사항) 고객이 정의한 구성을 사용하는 AWS STS 클라이언트로, 사용자의 ID 컨텍스트로accessRoleArn을 수임하는 데 사용됩니다. 제공되지 않으면applicationRoleArn을 사용하는 AWS STS 클라이언트가 인스턴스화되고 사용됩니다. -
applicationRoleArn: (선택사항) OIDC 및 AWS STS 클라이언트를 부트스트랩할 수 있도록AssumeRoleWithWebIdentity로 수임할 IAM 역할 ARN입니다.-
제공하지 않는 경우,
ssoOidcClient및stsClient매개변수 둘 다 제공해야 합니다. -
제공하는 경우,
applicationRoleArn은accessRoleArn매개변수와 동일한 값을 사용할 수 없습니다.applicationRoleArn은 accessRole을 수임하기 위해 사용되는 stsClient를 구성하는 데 사용됩니다.applicationRole및accessRole에 동일한 역할을 사용하면, 그 역할이 그 자체를 수임하는 셈이 되므로(자체 역할 수임), AWS에서는 이를 권장하지 않습니다. 자세한 내용은 공지 사항을 참조하세요.
-
ssoOidcClient, stsClient, applicationRoleArn 매개변수에 대한 고려 사항
TIP 플러그인을 구성할 때, 제공하는 매개변수에 따라 다음과 같은 권한 요구 사항을 고려해야 합니다.
-
ssoOidcClient및stsClient를 제공하는 경우:-
ssoOidcClient에 설정된 자격 증명은 Identity Center를 호출해 해당 Identity Center 전용 사용자 컨텍스트를 가져올 수 있는oauth:CreateTokenWithIAM권한을 보유해야 합니다. -
stsClient에 설정된 자격 증명은accessRole에서sts:AssumeRole및sts:SetContext권한을 가져야 합니다. 또한accessRole은stsClient에 있는 자격 증명과의 신뢰 관계도 구성해야 합니다.
-
-
applicationRoleArn을 제공하는 경우:-
applicationRole은 OIDC와 STS 클라이언트를 생성하는 데 사용되므로, 필요한 리소스(IdC 인스턴스,accessRole)에 대해oauth:CreateTokenWithIAM,sts:AssumeRole,sts:SetContext권한을 보유해야 합니다. -
applicationRole은webToken을 생성하는 데 사용되는 ID 제공업체와 신뢰 관계를 가지고 있어야 합니다. 이는 플러그인이 AssumeRoleWithWebIdentity 호출을 통해 applicationRole을 수임할 때webToken이 사용되기 때문입니다.
-
ApplicationRole 구성의 예:
웹 토큰 공급자의 신뢰 정책:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/IDENTITY_PROVIDER_URL" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "IDENTITY_PROVIDER_URL:aud": "CLIENT_ID_TO_BE_TRUSTED" } } } ] }
권한 정책:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Resource": [ "accessRoleArn" ] }, { "Effect": "Allow", "Action": [ "sso-oauth:CreateTokenWithIAM" ], "Resource": [ "*" ] } ] }
TIP를 사용한 코드 예제
아래 예제는 AWS SDK for Java 또는 AWS SDK for JavaScript을 사용하여 코드에서 TIP 플러그인을 구현하는 방법을 보여줍니다.