서비스 연결 역할 생성

서비스 연결 역할 생성

서비스 연결 역할(service-linked role)은 AWS 서비스에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 서비스가 사전 정의하며, 서비스가 사용자를 대신해 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다. 연결된 서비스는 서비스 연결 역할을 어떻게 만들고, 수정하고, 삭제하는지도 정의합니다. 서비스가 역할을 자동으로 만들거나 삭제할 수도 있고, 서비스의 마법사나 프로세스의 일부로 역할 생성, 수정, 삭제를 허용할 수도 있고, IAM으로 역할을 만들거나 삭제하도록 요구할 수도 있습니다. 방법과 관계없이 서비스 연결 역할은 서비스가 사용자를 대신해 작업을 완료하기 위한 권한을 수동으로 추가할 필요가 없으므로 서비스 설정 과정을 간소화합니다.

출처: 문서

본문

참고 서비스 역할은 서비스 연결 역할과 다르다는 것을 기억하세요.

서비스 역할은 서비스가 사용자를 대신해 작업을 수행하기 위해 수임하는 IAM 역할입니다. IAM 관리자는 IAM 내에서 서비스 역할을 만들고, 수정하고, 삭제할 수 있어요. 자세한 내용은 IAM 사용자 가이드의 AWS 서비스에 권한을 위임할 역할 생성을 참고하세요.

서비스 연결 역할은 AWS 서비스에 연결된 서비스 역할의 한 유형입니다. 서비스는 이 역할을 수임해 사용자를 대신해 작업을 수행할 수 있어요. 서비스 연결 역할은 AWS 계정에 나타나며 서비스가 소유합니다. IAM 관리자는 서비스 연결 역할의 권한을 보고, 편집할 수 없어요.

연결된 서비스는 서비스 연결 역할의 권한을 정의하며, 달리 정의되지 않는 한 그 서비스만 역할을 수임할 수 있어요. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며, 그 권한 정책은 다른 IAM 개체에 연결할 수 없습니다.

역할을 삭제하려면 먼저 관련 리소스를 삭제해야 해요. 이렇게 하면 리소스에 접근할 권한을 실수로 제거하는 것을 방지합니다.

팁 서비스 연결 역할 사용을 지원하는 서비스는 IAM과 함께 작동하는 AWS 서비스 문서에서 서비스 연결 역할(Service-Linked Role) 열에 Yes가 있는 서비스를 찾아 확인하세요. 링크가 있는 Yes를 선택해 해당 서비스의 서비스 연결 역할 문서를 확인할 수 있어요.

서비스 연결 역할 권한

IAM 개체(사용자 또는 역할)가 서비스 연결 역할을 만들거나 편집할 수 있도록 권한을 구성해야 합니다.

참고 서비스 연결 역할의 ARN에는 서비스 주체가 포함되며, 아래 정책에서 ``SERVICE-NAME.amazonaws.com으로 표시됩니다. 서비스 주체는 대소문자를 구분하고 형식이 AWS 서비스마다 다를 수 있으므로 추측하지 마세요. 서비스의 서비스 주체를 보려면 해당 서비스의 서비스 연결 역할 문서를 참고하세요.

특정 서비스 연결 역할을 만들 수 있는 IAM 개체 허용 서비스 연결 역할을 만들어야 하는 IAM 개체에 다음 정책을 추가합니다.

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*",
            "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
        }
    ]
}

모든 서비스 연결 역할을 만들 수 있는 IAM 개체 허용 서비스 연결 역할을 만들거나 필요한 정책이 포함된 모든 서비스 역할을 만들어야 하는 IAM 개체의 권한 정책에 다음 문을 추가합니다. 이 정책 문은 IAM 개체가 역할에 정책을 연결하는 것을 허용하지 않아요.

{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}

모든 서비스 역할의 설명을 편집할 수 있는 IAM 개체 허용 서비스 연결 역할이나 모든 서비스 역할의 설명을 편집해야 하는 IAM 개체의 권한 정책에 다음 문을 추가합니다.

{
    "Effect": "Allow",
    "Action": "iam:UpdateRoleDescription",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}

특정 서비스 연결 역할을 삭제할 수 있는 IAM 개체 허용 서비스 연결 역할을 삭제해야 하는 IAM 개체의 권한 정책에 다음 문을 추가합니다.

{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
}

모든 서비스 연결 역할을 삭제할 수 있는 IAM 개체 허용 서비스 연결 역할(서비스 역할은 아님)을 삭제해야 하는 IAM 개체의 권한 정책에 다음 문을 추가합니다.

{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}

기존 역할을 서비스에 전달할 수 있는 IAM 개체 허용 일부 AWS 서비스는 새 서비스 연결 역할을 만드는 대신 기존 역할을 서비스에 전달하도록 허용합니다. 이렇게 하려면 사용자에게 *역할을 서비스에 전달(pass the role)*할 권한이 있어야 합니다. 역할을 전달해야 하는 IAM 개체의 권한 정책에 다음 문을 추가합니다. 이 정책 문은 개체가 전달할 역할을 선택할 수 있는 역할 목록을 보는 것도 허용합니다. 자세한 내용은 사용자에게 AWS 서비스에 역할을 전달할 권한 부여 문서를 참고하세요.

{
  "Sid": "PolicyStatementToAllowUserToListRoles",
  "Effect": "Allow",
  "Action": ["iam:ListRoles"],
  "Resource": "*"
},
{
  "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
  "Effect": "Allow",
  "Action": [ "iam:PassRole" ],
  "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ"
}

서비스 연결 역할로 인한 간접 권한

서비스 연결 역할이 부여하는 권한은 다른 사용자와 역할에 간접적으로 전달될 수 있어요. AWS 서비스가 서비스 연결 역할을 사용하면 그 서비스 연결 역할은 자체 권한을 사용해 다른 AWS 서비스를 호출할 수 있습니다. 이는 서비스 연결 역할을 사용하는 서비스를 호출할 권한이 있는 사용자와 역할이 그 서비스 연결 역할이 접근할 수 있는 서비스에 간접적으로 접근할 수 있다는 뜻입니다.

예를 들어 Amazon RDS DB 인스턴스를 만들 때 RDS용 서비스 연결 역할이 아직 없으면 자동으로 생성됩니다. 이 서비스 연결 역할은 RDS가 사용자를 대신해 Amazon EC2, Amazon SNS, Amazon CloudWatch Logs, Amazon Kinesis를 호출하게 해줍니다. 계정의 사용자와 역할에 RDS 데이터베이스를 수정하거나 만들도록 허용한다면, RDS가 서비스 연결 역할로 그 리소스에 접근하므로 그들은 RDS를 호출해 Amazon EC2, Amazon SNS, Amazon CloudWatch Logs 로그, Amazon Kinesis 리소스와 간접적으로 상호작용할 수 있게 됩니다.

서비스 연결 역할 생성 방법

서비스 연결 역할을 생성하는 데 사용하는 방법은 서비스에 따라 다릅니다. 어떤 경우에는 서비스 연결 역할을 수동으로 만들 필요가 없어요. 예를 들어 서비스에서 특정 작업(리소스 생성 등)을 완료할 때 서비스가 서비스 연결 역할을 만들어줄 수 있어요. 또는 서비스 연결 역할을 지원하기 전에 서비스를 사용하고 있었다면 서비스가 계정에 역할을 자동으로 만들었을 수 있어요. 자세한 내용은 AWS 계정에 새 역할이 나타났습니다 문서를 참고하세요.

다른 경우에는 서비스 콘솔, API, CLI를 사용해 서비스 연결 역할을 수동으로 만드는 것을 지원할 수 있어요. 서비스 연결 역할 사용을 지원하는 서비스는 IAM과 함께 작동하는 AWS 서비스 문서에서 서비스 연결 역할(Service-Linked Role) 열에 Yes가 있는 서비스를 찾아 확인하세요. 해당 서비스에 대한 서비스 연결 역할 문서를 보려면 Yes 링크를 선택하세요.

서비스가 역할 생성을 지원하지 않으면 IAM으로 서비스 연결 역할을 만들 수 있어요.

중요 서비스 연결 역할은 AWS 계정의 IAM 역할 한도에 포함되지만, 한도에 도달했다면 계정에 서비스 연결 역할을 여전히 만들 수 있어요. 서비스 연결 역할만 한도를 초과할 수 있습니다.

서비스 연결 역할 생성 (콘솔)

IAM에서 서비스 연결 역할을 만들기 전에 연결된 서비스가 서비스 연결 역할을 자동으로 생성하는지 알아보고, 서비스의 콘솔, API, CLI에서 역할을 만들 수 있는지도 확인하세요.

서비스 연결 역할 생성 (콘솔)
  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
  2. IAM 콘솔의 탐색 창에서 역할(Roles) 을 선택합니다. 그런 다음 역할 생성(Create role) 을 선택합니다.
  3. AWS 서비스(AWS Service) 역할 유형을 선택합니다.
  4. 서비스의 사용 사례를 선택합니다. 사용 사례는 서비스가 필요한 신뢰 정책을 포함하도록 서비스가 정의합니다. 그런 다음 다음(Next) 을 선택합니다.
  5. 역할에 연결할 권한 정책을 하나 이상 선택합니다. 선택한 사용 사례에 따라 서비스는 다음 중 하나를 수행할 수 있습니다:
    • 역할이 사용하는 권한을 정의합니다.
    • 제한된 권한 세트에서 선택하도록 허용합니다.
    • 모든 권한에서 선택하도록 허용합니다.
    • 지금은 정책을 선택하지 않고, 나중에 정책을 만들어 역할에 연결하도록 허용합니다. 역할이 갖기를 원하는 권한을 할당하는 정책 옆의 확인란을 선택한 다음 다음(Next) 을 선택합니다.

    참고 지정한 권한은 역할을 사용하는 모든 개체가 사용할 수 있습니다. 기본적으로 역할에는 권한이 없습니다.

  6. 역할 이름(Role name) 에서 역할 이름 사용자 지정 정도는 서비스가 정의합니다. 서비스가 역할 이름을 정의하면 이 옵션은 편집할 수 없습니다. 다른 경우에는 서비스가 역할에 대한 접두사를 정의하고 선택적 접미사를 입력하도록 할 수 있어요. 가능하면 기본 이름에 추가할 역할 이름 접미사를 입력합니다. 이 접미사는 이 역할의 목적을 파악하는 데 도움이 됩니다. 역할 이름은 AWS 계정 내에서 고유해야 합니다. 대소문자는 구분하지 않습니다. 예를 들어 <service-linked-role-name>_SAMPLE과 <service-linked-role-name>_sample이라는 이름의 역할을 둘 다 만들 수 없습니다. 여러 개체가 역할을 참조할 수 있으므로 역할을 만든 후에는 이름을 편집할 수 없습니다.
  7. (선택) 설명(Description) 에 새 서비스 연결 역할의 설명을 편집합니다.
  8. 생성 중에는 서비스 연결 역할에 태그를 연결할 수 없습니다. IAM에서 태그 사용에 대한 자세한 내용은 AWS Identity and Access Management 리소스 태그 문서를 참고하세요.
  9. 역할을 검토한 다음 역할 생성(Create role) 을 선택합니다.

서비스 연결 역할 생성 (AWS CLI)

IAM에서 서비스 연결 역할을 만들기 전에 연결된 서비스가 서비스 연결 역할을 자동으로 생성하는지, 서비스의 CLI에서 역할을 만들 수 있는지 확인하세요. 서비스 CLI가 지원되지 않으면 IAM 명령을 사용해 서비스가 역할을 수임하는 데 필요한 신뢰 정책과 인라인 정책으로 서비스 연결 역할을 만들 수 있어요.

서비스 연결 역할 생성 (AWS CLI) 다음 명령을 실행합니다:

aws iam create-service-linked-role --aws-service-name SERVICE-NAME.amazonaws.com

서비스 연결 역할 생성 (AWS API)

IAM에서 서비스 연결 역할을 만들기 전에 연결된 서비스가 서비스 연결 역할을 자동으로 생성하는지, 서비스의 API에서 역할을 만들 수 있는지 확인하세요. 서비스 API가 지원되지 않으면 AWS API를 사용해 서비스가 역할을 수임하는 데 필요한 신뢰 정책과 인라인 정책으로 서비스 연결 역할을 만들 수 있어요.

서비스 연결 역할 생성 (AWS API) CreateServiceLinkedRole API 호출을 사용합니다. 요청에서 ``SERVICE_NAME_URL.amazonaws.com 형식의 서비스 이름을 지정합니다. 예를 들어 Lex Bots 서비스 연결 역할을 만들려면 lex.amazonaws.com을 사용합니다.

더 알아보기 (Learn more)