서비스 대 서비스 권한 부여 설정

서로 다른 계정의 허브 및 DNS 공유 VPC 간에 VPE 게이트웨이에 대한 DNS 공유를 구성하려면 허브 VPC 관리자가 IAM 서비스 간( s2s ) 권한 부여 정책을 설정해야 합니다. 자세한 정보는 서비스 간 액세스 권한을 부여하기 위해 권한 사용을 참조하십시오.

**참고: **

  • DNS 공유 VPC및 허브 VPC가 허브 VPC 관리자와 동일하거나 다른 계정을 사용하는 경우, 이 DNS-공유 VPC에 허브 VPC에 대한 DNSBindingConnector 권한을 부여하는 IAM 서비스 대 서비스 권한 부여 정책을 작성해야 합니다.
  • 현재 UI에서는 모든 VPC 인스턴스 만 허브 VPC에 대한 DNSBindingConnector 권한을 가질 수 있습니다. "특정" VPC를 표시하려면 API를 사용하거나 CLI에서 사용할 JSON 파일에서 API 요청을 랩핑해야 합니다. CLIAPI 와 함께 사용할 예제 코드가 제공됩니다.

콘솔, CLI, API 또는 Terraform으로 s2s 인증을 설정할 수 있습니다.

콘솔에서 IAM s2s 권한 부여 정책 만들기

콘솔에서 IAM s2s 권한 부여 정책을 만들려면 다음 단계를 따르세요:

  1. IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM) ]로 이동합니다. IBM Cloud® Identity and Access Management 페이지가 표시됩니다.

  2. 측면 패널에서 권한을 선택합니다.

  3. '권한 관리' 페이지에서 '생성'을 클릭합니다.

  4. '서비스 승인 부여' 페이지에서 소스 계정을 선택하십시오:

    • 계정에서 권한을 설정하는 경우 이 계정을 선택하십시오.

    • 기업 계정에서 인증을 설정하는 경우 다른 계정을 선택합니다.

      교차 계정 구성의 경우에만 계정 ID를 입력하여 권한 부여를 위한 소스 계정을 지정합니다.

  5. 소스 서비스의 경우 목록에서 VPC 인프라 서비스 를 선택하십시오.

  6. 범위를 선택하십시오. 특정 자원을 선택하십시오.

  7. 리소스 유형을 선택하십시오. 목록에서 가상 프라이빗 클라우드를 선택하십시오.

  8. 소스 서비스 인스턴스를 선택하십시오. 모든 인스턴스를 선택하십시오.

    특정 인스턴스를 선택하려면 CLI 또는 API 지시사항을 사용해야 합니다. 이는 알려진 제한사항입니다.

  9. 대상 서비스의 경우 목록에서 VPC 인프라 서비스 를 선택하십시오.

  10. 범위는 특정 리소스를 선택합니다.

  11. 리소스 유형을 선택하십시오. 목록에서 가상 프라이빗 클라우드를 선택하십시오.

    대상 VPC를 제공하려면 VPC ID를 선택합니다. 연산자: 문자열 같음을 선택하고 VPC 값을 입력합니다.

  12. 서비스 액세스 아래의 역할 섹션에서 DNSBindingConnector 를 선택하십시오.

  13. 권한 부여를 클릭하십시오.

  14. 권한 관리 페이지로 돌아가면 작성 을 다시 클릭하고 동일한 단계를 수행하여 다른 두 서비스에 대한 권한을 설정하십시오.

CLI에서 IAM s2s 권한 부여 정책 작성

CLI에서 IAM s2s 권한 부여 정책을 작성하려면 다음 단계를 수행하십시오.

  1. CLI 환경을 설정하십시오.

  2. CLI를 사용하여 계정에 로그인하세요. 비밀번호를 입력하면 시스템이 사용할 계정 및 지역에 대한 프롬프트를 표시합니다.

    ibmcloud login --sso
    
  3. IAM s2s 권한 부여 정책을 작성하십시오.

    ibmcloud iam authorization-policy-create is DNSBindingConnector --source-resource-type vpc --target-resource-type vpc
    

CLI에서 특정 VPC 인스턴스 표시

DNS 공유 VPC및 허브 VPC가 허브 VPC 관리자와 동일한 계정을 사용하는 경우 이 DNS 공유 VPC에 허브 VPC에 대한 DNSBindingConnector 권한을 부여하는 IAM 서비스 대 서비스 권한 부여 정책을 작성해야 합니다.

현재 UI에서는 Source service instance 모든 VPC 인스턴스 만 허브 VPC에 대한 DNSBindingConnector 권한을 가질 수 있습니다.

CLI에서 특정 VPC를 표시하려면 API 요청 컨텐츠와 함께 JSON 파일을 사용해야 합니다. 예를 들어, 다음과 같습니다.

ibmcloud iam authorization-policy-create --file JSON_FILE

여기서 JSON_FILE 에는 다음이 포함됩니다.

{"type":"authorization","subjects":[{"attributes":[{"name":"accountId","value":"e38cfd44b6e44b249ac75dd5de0cc8aa"},{"name":"serviceName","value":"is"},{"name":"resourceType","value":"vpc"},{"name":"resource","value":"r006-fd189c4f-52a0-4694-abfd-186cb6011a3c"}]}],"roles":[{"role_id":"crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector"}],"resources":[{"attributes":[{"name":"accountId","value":"e38cfd44b6e44b249ac75dd5de0cc8aa"},{"name":"serviceName","value":"is"},{"name":"vpcId","value":"r006-ffaedf75-4f44-4ead-989d-cd37816a13d2"}]}]}

API를 사용하여 IAM s2s 권한 부여 정책 작성

API를 사용하여 IAM s2s 권한 부여 정책을 작성하려면 다음 단계를 수행하십시오.

  1. API 환경을 설정하십시오.

  2. API 명령어에서 사용할 수 있도록 다음 값들을 변수에 저장하십시오:

    export dns_shared_account_id=<dns_shared_vpc_account_id>
    export hub_account_id=<hub_vpc_account_id>
    export dns_shared_vpc_id=<dns_shared_vpc_id>
    export hub_vpc_id=<hub_vpc_id>
    
  3. 서로 다른 계정에 걸쳐 허브와 DNS 공유 VPC 간의 DNS 확인 바인딩을 생성하고 삭제하려면 s2s 정책은 허브 VPC 계정에 존재해야 합니다. 이는 허브 VPC에서 DNS 공유 VPC에 DNSBindingConnector 역할을 제공합니다. 생성하려면 s2s 정책을 참조하세요.policies 의 방법 IAM 정책 관리 API

요청 예제

{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "'$dns_shared_account_id'"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "resourceType",
          "value": "vpc"
        },
        {
          "name": "resource",
          "value": "'$dns_shared_vpc_id'"
        }
      ]
    }
  ],
  "roles": [
    {
      "role_id": "crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "'$hub_account_id'"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "vpcId",
          "value": "'$hub_vpc_id'"
        }
      ]
    }
  ]
}

명령 예제

curl -sX POST "$iam_api_endpoint/v1/policies" -H "Authorization: Bearer ${iam_token}" -d '$request_body'

API를 사용하여 특정 VPC 인스턴스 표시

DNS 공유 VPC및 허브 VPC가 허브 VPC 관리자와 동일한 계정을 사용하는 경우 이 DNS 공유 VPC에 허브 VPC에 대한 DNSBindingConnector 권한을 부여하는 IAM 서비스 대 서비스 권한 부여 정책을 작성해야 합니다.

현재 UI에서는 Source service instance 모든 VPC 인스턴스 만 허브 VPC에 대한 DNSBindingConnector 권한을 가질 수 있습니다.

다음은 허브 VPC에서 DNSBindingConnector 권한을 갖도록 DNS 공유 VPC에 권한을 부여하는 샘플 API입니다. role_idcrn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector 입니다.

{
"type": "authorization",
"subjects": [
{
"attributes": [
{ "name": "accountId", "value": "Account S (Spoke)" }
 ,
   { "name": "serviceName", "value": "is" }
 ,
{ "name": "resourceType", "value": "vpc" }
 ,
{ "name": "resource", "value": "Spoke VPC ID" }
 ]
}
],
"roles": [
{ "role_id": "crn:v1:bluemix:public:is::::serviceRole:DNSBindingConnector" }
 ],
"resources": [
{
"attributes": [
{ "name": "accountId", "value": "Account H (Hub)" }
 ,
{ "name": "serviceName", "value": "is" }
 ,
{ "name": "vpcId", "value": "Hub VPC ID" }
 ]
}
]
}

Terraform을 사용하여 IAM s2s 권한 부여 정책 작성

Terraform을 사용하여 IAM s2s 권한 부여 정책을 작성할 수 있습니다.

Terraform을 사용하려면 Terraform CLI를 다운로드하고 IBM Cloud 공급자 플러그인을 구성하세요. 자세한 정보는 Terraform 시작하기 를 참조하십시오.

VPC 인프라 서비스는 기본적으로 us-south 를 대상으로 하는 지역별 엔드포인트를 사용합니다. 다른 지역에서 VPC를 작성하는 경우 provider.tf 파일의 제공자 블록에서 적절한 지역을 대상으로 지정해야 합니다.

기본 us-south 이외의 지역을 대상으로 지정하는 다음 예제를 참조하십시오.

resource "ibm_iam_authorization_policy" "policy" {

  #"DNSBindingConnector",

  roles = [

    "DNS Binding Connector",

  ]

    subject_attributes {

        name  = "accountId"

        value = "var.accountId1"

    }

    subject_attributes {

        name  = "serviceName"

        value = "is"

    }

     subject_attributes {

        name  = "resourceType"

        value = "vpc"

    }

    subject_attributes {

        name  = "resource"

        value = ibm_is_vpc.spoke_vpc.id

    }

    resource_attributes {

        name     = "accountId"

        value    =  "var.accountId2"

    }

    resource_attributes {

        name     = "serviceName"

        value    = "is"

    }

   resource_attributes {

      name  =  "vpcId"

      value =  ibm_is_vpc.hub_vpc.id

   }

}