웹 ID 또는 OpenID 연결 통합(콘솔)에 대한 역할 생성 - AWS Identity and Access Management

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

웹 ID 또는 OpenID 연결 통합(콘솔)에 대한 역할 생성

AWS 계정에 IAM 사용자를 생성하는 대신에 웹 자격 증명 연동 또는 OpenID Connect Federation(OIDC) 자격 증명 공급자를 사용할 수 있습니다. 자격 증명 공급자(IdP)를 사용하면 AWS 외부의 사용자 자격 증명을 관리할 수 있고 이 외부 사용자 자격 증명에 계정의 AWS 리소스에 대한 사용 권한을 부여할 수 있습니다. 연동 및 자격 증명 공급자에 대한 자세한 내용은 ID 공급자 및 통합 단원을 참조하십시오.

웹 ID 또는 OIDC에 대한 역할을 만들기 위한 전제 조건

웹 자격 증명 연동을 위한 역할을 만들기 전에 먼저 다음 필수 선행 단계를 완료해야 합니다.

웹 자격 증명 연동을 위한 역할 만들기를 준비하려면

  1. 하나 이상의 IdP를 사용해 개발자로 로그인합니다. AWS 리소스로 액세스가 필요한 앱을 생성하면 공급자 정보로 앱도 구성합니다. 이렇게 하면 공급자는 앱의 고유한 애플리케이션 및 시청자 ID를 제공합니다. (다른 제공업체들이 이 프로세스에 다른 용어를 사용합니다. 이 안내서는 구성 를 참조하십시오.) 각 공급자와 함께 여러 앱을 구성하거나 단일 앱을 사용하여 여러 공급자를 구성할 수 있습니다. 자격 증명 공급자에 대한 정보 보기

  2. IAM의 자격 증명 공급자로부터 필요한 정보를 가져온 다음 의 자격 증명 공급자를 만들 수 있습니다. 자세한 정보는 OpenID Connect(OIDC) ID 공급자 만들기 단원을 참조하십시오.

  3. IdP를 통해 인증된 사용자가 맡을 역할에 대한 정책을 준비합니다. 다른 어떤 역할과 마찬가지로 모바일 앱을 위한 역할에는 2개의 정책이 포함됩니다. 하나는 역할을 위임할 사용자를 지정하는 신뢰 정책입니다. 다른 하나는 모바일 앱의 액세스가 허용 또는 거부되는 AWS 작업 및 리소스를 지정하는 권한 정책입니다.

    웹 자격 증명 공급자의 경우, Amazon Cognito를 사용하여 자격 증명을 관리하는 것이 좋습니다. 이 경우 이 예제와 비슷한 신뢰 정책을 사용합니다.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"}, "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"} } } }

    us-east-2:12345678-abcd-abcd-abcd-123456을 Amazon Cognito에서 할당한 자격 증명 풀 ID로 대치합니다.

    신뢰 정책을 생성할 시 웹 자격 증명 IdP를 수동으로 구성하려면 자체 앱만이 이 역할을 수임한다고 보장하는 세 가지 값을 사용해야 합니다.

    • Action 요소에 대해서는 sts:AssumeRoleWithWebIdentity 작업을 사용하십시오.

    • Principal 요소에 대해서는 {"Federated":providerUrl/providerArn} 문자열을 사용하십시오.

      • 일부 범용 OpenID Connect(OIDC) IdP의 경우, providerUrl이 URL입니다. 다음 예제는 일부 범용 IdP에 대해 보안 주체를 지정하는 방법을 포함합니다.

        "Principal":{"Federated":"cognito-identity.amazonaws.com"}

        "Principal":{"Federated":"www.amazon.com"}

        "Principal":{"Federated":"graph.facebook.com"}

        "Principal":{"Federated":"accounts.google.com"}

      • 다른 OIDC 공급자의 경우, 다음 예시와 같이 단계 2에서 생성한 OIDC 자격 증명 공급자의 ARN을 사용합니다.

        "Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}

    • 권한을 제한하려면 Condition 요소에 StringEquals 조건을 사용합니다. 자격 증명 풀 ID(Amazon Cognito용) 또는 앱 ID(다른 공급자용)를 테스트합니다. 이는 IdP를 통해 앱을 구성할 때 얻은 앱 ID와 일치해야 합니다. 이로써 그 요청이 앱으로부터 오는 것임을 확인합니다. 사용하는 IdP에 따라 다음 예제와 비슷한 조건 요소를 생성합니다.

      "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}

      "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}

      "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}

      "Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}

      OIDC 공급자의 경우 다음 예시와 같이 aud 컨텍스트 키로 OIDC IdP의 정규화된 URL을 사용합니다.

      "Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}

    역할의 신뢰 정책에서 보안 주체에 대한 값은 하나의 IdP에 고유한 것이라는 점에 유의하십시오. 하나의 역할은 오직 하나의 보안 주체만을 지정할 수 있습니다. 따라서 모바일 앱이 사용자에게 1개 이상의 IdP에서 로그인할 수 있게 허용한다면 지원하고자 하는 각각의 IdP에 대한 개별 역할을 만들어야 합니다. 따라서, 각 IdP에 대한 개별 신뢰 정책을 생성해야 합니다.

    다음 예는 사용자가 Login with Amazon에서 로그인하는 경우 모바일 앱에 대해 설계되는 신뢰 정책을 보여줍니다. 이 예에서,amzn1.application-oa2-123456 은 Amazon 을 사용하여 앱을 구성할 때 Amazon이 할당한 앱 ID를 나타냅니다.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "RoleForLoginWithAmazon", "Effect": "Allow", "Principal": {"Federated": "www.amazon.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}} }] }

    다음 예는 사용자가 Facebook에서 로그인하는 경우 모바일 앱에 대해 설계되는 신뢰 정책을 보여줍니다. 이 예에서는 111222333444555 는 Facebook에서 할당한 앱 ID를 나타냅니다.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "RoleForFacebook", "Effect": "Allow", "Principal": {"Federated": "graph.facebook.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}} }] }

    다음 예는 사용자가 Google에서 로그인하는 경우 모바일 앱에 대해 설계되는 신뢰 정책을 보여줍니다. 이 예에서는 666777888999000 은 Google에서 할당한 앱 ID를 나타냅니다.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "RoleForGoogle", "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}} }] }

    다음 예는 사용자가 Amazon Cognito을 사용하여 로그인하는 경우 모바일 앱에 대해 설계되는 신뢰 정책을 보여줍니다. 이 예에서는 us-east:12345678-ffff-ffff-ffff-123456 은 다음에 의해 할당된 ID 풀 ID를 나타냅니다. Amazon Cognito.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "RoleForCognito", "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}} }] }

웹 ID 또는 OIDC에 대한 역할 생성

사전 요구 사항을 완료한 후에는 IAM에서 역할을 만들 수 있습니다. 다음 절차는 AWS Management 콘솔에서 웹 자격 증명/OIDC에 대한 역할을 만드는 방법을 설명합니다. AWS CLI 또는 AWS API에 역할을 만들려면 제3자 ID 공급자에 대한 역할 생성(연맹)의 절차 단원을 참조하십시오.

중요

Amazon Cognito를 사용하고 있는 경우 Amazon Cognito 콘솔을 사용해 역할을 설정해야 합니다. 그렇지 않다면 IAM 콘솔을 사용하여 웹 자격 증명 연동의 역할을 만듭니다.

웹 자격 증명 연동의 IAM 역할을 만들려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

  3. 웹 ID 역할 유형을 선택합니다.

  4. 자격 증명 공급자에서 역할의 자격 증명 공급자를 선택합니다.

    • 개별 웹 자격 증명 공급자에 대한 역할을 만들 경우, Login with Amazon, Facebook 또는 Google을 선택합니다.

      참고

      지원할 각 자격 증명 공급자에 대해 별도의 역할을 만들어야 합니다.

    • Amazon Cognito의 고급 역할을 만드는 경우 Amazon Cognito를 선택합니다.

      참고

      고급 시나리오에서 작업할 때는 Amazon Cognito로 사용할 역할을 수동으로 만들기만 하면 됩니다. 그렇지 않은 경우 Amazon Cognito가 역할을 대신 만들 수 있습니다. 에 대한 자세한 정보 Amazon Cognito, 참조 Amazon Cognito 신원 에서 AWS iOS용 모바일 SDK 개발자 가이드Amazon Cognito 신원 에서 AWS 안드로이드용 모바일 SDK 개발자 가이드.

  5. 애플리케이션의 ID를 입력합니다. ID의 라벨은 선택한 공급자에 따라 변경됩니다.

    • Login with Amazon에 대한 역할을 만드는 경우 Application ID(애플리케이션 ID) 상자에 애플리케이션 ID를 입력합니다.

    • Facebook에 대한 역할을 만드는 경우 Application ID(애플리케이션 ID) 상자에 애플리케이션 ID를 입력합니다.

    • Google에 대한 역할을 만드는 경우 대상 상자에 대상 사용자 이름을 입력합니다.

    • Amazon Cognito의 역할을 만드는 경우, Amazon Cognito 애플리케이션에 대해 만든 자격 증명 풀의 ID를 자격 증명 풀 ID 상자에 입력합니다.

  6. (선택 사항) 애플리케이션 사용자가 역할에서 부여한 권한을 사용하기 위해 충족해야 하는 추가 조건을 만들려면 조건 추가(선택 사항)을 클릭합니다. 예를 들어, 특정 IAM 사용자 ID에만 AWS 리소스에 대한 액세스 권한을 부여하는 조건을 추가할 수 있습니다.

  7. 웹 ID 정보를 검토한 후 다음: 권한

  8. IAM은 계정의 AWS 관리형 또는 사용자 관리형 정책 목록을 포함합니다. 권한 정책을 사용하기 위한 정책을 선택하거나 정책 생성을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 내용은 만들기 IAM 정책(콘솔) 절차의 4단계 단원을 참조하십시오. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아갑니다. 웹 ID 사용자에게 부여하려는 권한 정책 옆의 확인란을 선택합니다. 원할 경우, 여기서 정책을 선택하지 않고 나중에 정책을 만들어서 역할에 연결할 수 있습니다. 기본적으로 역할은 권한이 없습니다.

  9. (선택 사항) 권한 경계로서 설정됨. 이는 고급 기능입니다.

    Set permissions boundary(권한 경계 설정) 섹션을 열고 Use a permissions boundary to control the maximum role permissions(최대 역할 권한을 관리하기 위한 권한 경계 사용)을 선택합니다. 정책을 선택하여 권한 경계를 사용하십시오.

  10. 다음을 선택합니다. Tags

  11. (선택 사항) 태그를 키–값 페어로 연결하여 메타데이터를 역할에 추가합니다. IAM에서의 태그 사용에 대한 자세한 정보는 태깅 IAM 사용자 및 역할 단원을 참조하십시오.

  12. 다음을 선택합니다. 검토

  13. 역할 이름에 역할 이름을 입력합니다. 역할 이름은 AWS 계정 내에서 고유해야 합니다. 대소문자는 구별하지 않습니다. 예를 들어, 두 역할 모두라는 역할을 작성할 수 없습니다. PRODROLEprodrole. 다른 AWS 리소스가 역할을 참조할 수 있으며, 역할 이름이 생성된 후에는 해당 역할의 이름을 편집할 수 없습니다.

  14. (선택 사항) [Role description]에 새 역할에 대한 설명을 입력합니다.

  15. 역할을 검토한 다음 [Create role]을 선택합니다.