보안 인증 공급자 - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API 참조 안내서는 AWS SDK for JavaScript 버전 3(V3)의 모든 API 작업을 자세히 설명합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

보안 인증 공급자

v2에서 JavaScript용 SDK는 선택할 수 있는 자격 증명 공급자 목록과 Node.js에서 기본적으로 사용 가능한 자격 증명 공급자 체인을 제공하며, 이를 통해 가장 일반적인 공급자의 AWS 자격 증명을 로드하려고 합니다. SDK for JavaScript v3는 자격 증명 공급자의 인터페이스를 간소화하므로 사용자 지정 자격 증명 공급자를 더 쉽게 사용하고 쓸 수 있습니다. 새로운 자격 증명 공급자 체인 외에도 SDK for JavaScript v3는 모두 v2와 동등한 것을 제공하는 것을 목표로 하는 자격 증명 공급자 목록을 제공합니다.

다음은 v2의 모든 자격 증명 공급자와 v3의 해당 자격 증명 공급자입니다.

기본 자격 증명 공급자

기본 자격 증명 공급자는 명시적으로 제공하지 않는 경우 SDK for JavaScript가 AWS 자격 증명을 확인하는 방법입니다.

임시 자격 증명

  • v2: ChainableTemporaryCredentialsAWS.STS에서 검색된 임시 자격 증명을 나타냅니다. 추가 파라미터가 없으면 AWS.STS.getSessionToken() 작업에서 자격 증명을 가져옵니다. IAM 역할이 제공된 경우, AWS.STS.assumeRole() 작업이 해당 역할의 자격 증명을 가져오는 데 사용됩니다. AWS.ChainableTemporaryCredentialsAWS.TemporaryCredentials와는 다른 방식으로 masterCredentials 및 갱신을 처리합니다. AWS.ChainableTemporaryCredentials는 사용자가 전달한 masterCredentials를 사용하여 만료된 자격 증명을 갱신하여 STS 자격 증명의 체인 연결을 지원합니다. 그러나 AWS.TemporaryCredentials는 인스턴스화 중에 masterCredentials를 반복적으로 축소하므로 중간 임시 자격 증명이 필요한 자격 증명을 새로 고칠 수 없습니다.

    원본 TemporaryCredentials는 v2의 ChainableTemporaryCredentials에서 더 이상 사용되지 않습니다.

  • v3: fromTemporaryCredentials. @aws-sdk/credential-providers 패키지에서 fromTemporaryCredentials()를 호출할 수 있습니다. 다음은 그 예입니다.

    import { FooClient } from "@aws-sdk/client-foo"; import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import // const { FooClient } = require("@aws-sdk/client-foo"); // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import const sourceCredentials = { // A credential can be a credential object or an async function that returns a credential object }; const client = new FooClient({ credentials: fromTemporaryCredentials({ masterCredentials: sourceCredentials, params: { RoleArn }, }), });

Amazon Cognito Identity 자격 증명

일반적으로 브라우저에서 사용되는 Amazon Cognito Identity 서비스에서 자격 증명을 로드합니다.

  • v2: CognitoIdentityCredentials Amazon Cognito Identity 서비스를 사용하여 STS 웹 ID 페더레이션에서 검색된 자격 증명을 나타냅니다.

  • v3: Cognito Identity Credential Provider @aws/credential-providers 패키지는 두 개의 자격 증명 공급자 함수를 제공합니다. 하나는 fromCognitoIdentity로, 자격 증명 ID를 받아 cognitoIdentity:GetCredentialsForIdentity를 직접 호출합니다. 다른 하나는 fromCognitoIdentityPool로, 자격 증명 풀 ID를 받아 첫 번째 간접 호출 시 cognitoIdentity:GetId를 직접 호출한 후 직접 호출합니다fromCognitoIdentity. 후자의 후속 간접 호출은 GetId를 다시 간접 호출하지 않습니다.

    공급자는 Amazon Cognito 개발자 안내서에 설명된 ‘간소화된 흐름’을 구현합니다. 직접 호출 cognito:GetOpenIdTokensts:AssumeRoleWithWebIdentity를 포함하는 ‘클래식 흐름’은 지원되지 않습니다. 필요한 경우 기능 요청을 시작해 주세요.

    // fromCognitoIdentityPool example import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import const client = new FooClient({ region: "us-east-1", credentials: fromCognitoIdentityPool({ clientConfig: cognitoIdentityClientConfig, // Optional identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030", customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional logins: { // Optional "graph.facebook.com": "FBTOKEN", "www.amazon.com": "AMAZONTOKEN", "api.twitter.com": "TWITTERTOKEN", }, }), });
    // fromCognitoIdentity example import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import // const { fromCognitoIdentity } = require("@aws-sdk/credential-provider-cognito-identity"); // CommonJS import const client = new FooClient({ region: "us-east-1", credentials: fromCognitoIdentity({ clientConfig: cognitoIdentityClientConfig, // Optional identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f", customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional logins: { // Optional "graph.facebook.com": "FBTOKEN", "www.amazon.com": "AMAZONTOKEN", "api.twitter.com": "TWITTERTOKEN", }, }), });

Amazon EC2 메타데이터(IMDS) 자격 증명

Amazon EC2 인스턴스의 메타데이터 서비스에서 받은 자격 증명을 나타냅니다.

  • v2: EC2MetadataCredentials

  • v3: fromInstanceMetadata. Amazon EC2 인스턴스 메타데이터 서비스에서 자격 증명을 소싱할 자격 증명 공급자를 생성합니다.

    import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import const client = new FooClient({ credentials: fromInstanceMetadata({ maxRetries: 3, // Optional timeout: 0, // Optional }), });

Amazon ECS 자격 증명

지정된 URL에서 받은 자격 증명을 나타냅니다. 이 공급자는 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 또는 AWS_CONTAINER_CREDENTIALS_FULL_URI 환경 변수로 지정된 URI에서 임시 자격 증명을 요청합니다.

  • v2: ECSCredentials 또는 RemoteCredentials

  • v3: fromContainerMetadata. Amazon ECS 컨테이너 메타데이터 서비스에서 자격 증명을 소싱할 자격 증명 공급자를 생성합니다.

    import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import const client = new FooClient({ credentials: fromContainerMetadata({ maxRetries: 3, // Optional timeout: 0, // Optional }), });

파일 시스템 자격 증명

  • v2: FileSystemCredentials. 디스크에 있는 JSON 파일의 자격 증명을 나타냅니다.

  • v3: 더 이상 사용되지 않습니다. JSON 파일을 명시적으로 읽고 클라이언트에 제공할 수 있습니다. 필요한 경우 기능 요청을 시작해 주세요.

SAML 자격 증명 공급자

  • v2: SAMLCredentials STS SAML 지원에서 검색된 자격 증명을 나타냅니다.

  • v3: 사용할 수 없습니다. 필요한 경우 기능 요청을 시작해 주세요.

공유 자격 증명 파일 자격 증명

공유 자격 증명 파일에서 자격 증명을 로드합니다(기본값은 ~/.aws/credentials 또는 AWS_SHARED_CREDENTIALS_FILE 환경 변수로 정의됨). 이 파일은 다양한 AWS SDK 및 도구에서 지원됩니다. 자세한 내용은 공유 구성 및 자격 증명 파일 문서를 참조하세요.

  • v2: SharedIniFileCredentials

  • v3: fromIni

    import { fromIni } from "@aws-sdk/credential-providers"; // const { fromIni } from("@aws-sdk/credential-providers"); const client = new FooClient({ credentials: fromIni({ configFilepath: "~/.aws/config", // Optional filepath: "~/.aws/credentials", // Optional mfaCodeProvider: async (mfaSerial) => { // implement a pop-up asking for MFA code return "some_code"; }, // Optional profile: "default", // Optional clientConfig: { region }, // Optional }), });

웹 ID 자격 증명

디스크의 파일에서 OIDC 토큰을 사용하여 자격 증명을 검색합니다. Amazon EKS에서 일반적으로 사용됩니다.

  • v2: TokenFileWebIdentityCredentials

  • v3: fromTokenFile

    import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import // const { fromTokenFile } from("@aws-sdk/credential-providers"); // CommonJS import const client = new FooClient({ credentials: fromTokenFile({ // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable roleArn: "arn:xxxx", // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable roleSessionName: "session:a", // Optional. STS client config to make the assume role request. clientConfig: { region }, }), });

웹 ID 페더레이션 자격 증명

STS 웹 ID 페더레이션 지원에서 자격 증명을 검색합니다.

  • v2: WebIdentityCredentials

  • v3: fromWebToken

    import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import // const { fromWebToken } from("@aws-sdk/credential-providers"); // CommonJS import const client = new FooClient({ credentials: fromWebToken({ // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable roleArn: "arn:xxxx", // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable roleSessionName: "session:a", // Optional. STS client config to make the assume role request. clientConfig: { region }, }), });