Block Storage for VPC 에 대한 서비스 대 서비스 권한 설정

고객 관리형 암호화를 위해 Block Storage for VPC 과 Key Protect 간에, 또는 자동 스냅샷 기능을 위해 백업 서비스와 서비스 간 인증을 설정하십시오. 필요한 액세스 권한을 부여하도록 IAM 권한을 구성하십시오.

개요

권한 부여에서, 소스 서비스는 대상 서비스에 대한 액세스 권한이 부여되는 서비스입니다. 선택되는 역할은 소스 서비스의 액세스 권한 레벨을 정의합니다. 대상 서비스는 지정되는 역할을 기반으로 소스 서비스가 액세스할 수 있도록 권한을 부여하는 서비스입니다. 일반적으로 소스 서비스는 인증이 생성된 계정과 동일한 계정에 있을 수도 있고, 다른 계정에 있을 수도 있습니다. 인증은 대상 서비스를 소유한 계정에서 생성해야 합니다.

고객 관리 CRK로 암호화된 볼륨을 작성하려면 선택한 블록 서비스와 키 관리 서비스 간에 서비스 대 서비스 권한을 설정해야 합니다.

Hyper Protect Crypto Services 는 더 이상 사용되지 않습니다. 고객은 2027년 3월 20일까지 기존 인스턴스를 사용할 수 있습니다. 자세한 내용은 ‘ IBM Cloud Hyper Protect Crypto Services 의 사용 중단 ’을 참조하십시오. 지속적인 보안을 위해 기존 암호화 키를 전용 Key Protect 인스턴스로 마이그레이션하는 것을 고려해 보시기 바랍니다. 자세한 내용은 마이그레이션 가이드를 참조하십시오.

Block Storage for VPC 볼륨의 백업 스냅샷을 작성하려면 백업 서비스에 Block Storage for VPC, VPC의 스냅샷 및 Virtual Server for VPC 서비스에 대한 작업을 수행할 수 있는 권한이 부여되어야 합니다. 자세한 정보는 백업 서비스에 대한 서비스 대 서비스 권한 설정 을 참조하십시오.

승인에 대한 자세한 내용은 승인 기능을 사용하여 서비스 간 액세스 권한 부여사용자 역할 을 참조하십시오.

콘솔에서 고객 관리 암호화를 위한 서비스 간 인증 생성

계정 간 암호화를 위해 인증이 필요한 경우, 암호화 키를 소유한 대상 계정에서 인증을 만들어야 합니다.

  1. IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM) ]로 이동합니다.
  2. 사이드 패널에서 액세스 관리를 클릭하고 권한 부여를 선택합니다.
  3. 권한 관리 페이지에서 작성을 클릭합니다.
  4. 에서원천 섹션에서소스 계정. 소스 계정은 블록 스토리지 볼륨을 생성할 곳입니다.
    • 다른 계정에서 대상 계정의 CRK를 사용하도록 허용하는 것이 목표인 경우 특정 계정을 선택하고 32자 길이의 계정 ID를 입력합니다. 그리고 나서 다음을 클릭하십시오.
    • 그렇지 않은 경우, ‘이 계정’을 선택하세요. 그리고 나서 다음을 클릭하십시오.
  5. 소스 서비스의 경우, 목록에서 Cloud Block Storage 를 선택합니다. 다음을 클릭하십시오.
    1. 모든 리소스를 클릭하여 범위를 선택합니다.
    2. 다음 을 클릭하십시오.
  6. 대상 서비스의 경우, KeyProtect 목록에서 선택하십시오.
  7. Reader 역할을 선택하십시오.
  8. 소스 및 종속 서비스가 권한을 위임할 수 있도록 하려면 이 상자를 선택하십시오.
  9. 딸깍 하는 소리검토 그리고 당신의 선택을 살펴보세요.
  10. 권한 부여를 클릭하십시오.

콘솔에서 계정 간 복원을 위한 서비스 간 권한 부여 만들기

다음 단계는 다른 계정에서 만든 스냅샷을 사용하여 볼륨을 복원할 수 있도록 한 계정의 Block Storage 서비스에 권한을 부여하는 단계입니다. 이 단계는 공유할 스냅샷을 소유한 계정에서 수행해야 합니다. 수신 계정은 공유 스냅샷의 CRN으로 볼륨 복원을 시작하기 전에 관리자 사용자가 IAM에서 SnapshotRemoteAccountRestorer 역할을 가지고 있는지 확인해야 합니다.

  1. 권한 관리 페이지에서 작성을 클릭합니다.
  2. '서비스 승인 부여' 페이지에서 소스 계정을 선택하십시오.
    1. 다른 계정의 스냅샷 사용을 허용하는 것이 목표이므로 특정 계정를 선택합니다.
    2. 32자 길이의 계정 ID를 입력하십시오.
    3. 다음 을 클릭하십시오.
  3. 소스 서비스의 경우 목록에서 VPC 인프라 서비스를 선택합니다. 다음을 클릭하십시오.
    1. 특정 리소스를 클릭하여 범위를 선택합니다.
    2. 리소스 유형을 선택하고, Block Storage for VPC.
    3. 다음 을 클릭하십시오.
  4. 대상 서비스의 경우 목록에서 VPC 인프라 서비스를 선택합니다.
    1. 특정 리소스를 클릭하여 범위를 선택합니다.
    2. 속성 선택를 클릭합니다.
    3. 목록에서 리소스 유형를 선택합니다.
    4. 다음 필드에서 Block Storage VPC용 스냅샷를 선택합니다.
    5. 특정 스냅샷으로 권한을 제한하려면 조건 추가를 클릭합니다.
      1. 속성 선택를 클릭하고 스냅샷 ID 를 선택합니다.
      2. 스냅샷 ID를 입력하십시오. 다음을 클릭하십시오.
  5. Snapshot Remote Account Restorer 역할을 선택하십시오.
  6. 딸깍 하는 소리검토 그리고 당신의 선택을 살펴보세요.
  7. 권한 부여를 클릭하십시오.

CLI에서 고객 관리 암호화를 위한 서비스 대 서비스 권한 부여 작성

ibmcloud iam authorization-policy-create 명령을 실행하여 Block 서비스가 키 관리 서비스(Key Management Services, Key Protect )와 연동할 수 있도록 권한 부여 정책을 생성하십시오. 소스 서비스는 server-protect 이며, 대상 서비스는 kms 입니다. 할당해야 할 역할은 ‘ Reader ’입니다. 다음 예제는 Block 서비스와 Key Protect 간에 인증 정책을 생성합니다.

ibmcloud iam authorization-policy-create server-protect kms Reader
Creating authorization policy under account a1234567 as test.user@ibm.com...
OK

계정에 대해 이미 배치된 서비스 권한을 나열하려면 ibmcloud iam authorization-policies 명령을 실행하십시오. 다음 예는 Key Protect 또는 Hyper Protect Crypto Services에 저장된 CRK로 블록 서비스를 암호화할 수 있음을 보여 줍니다.

ibmcloud iam authorization-policies
Getting authorization policies under account a1234567 as test.user@ibm.com...
OK
ID:                        1f722de4-c3e6-4765-b0d3-482ec77a04f8
Source service name:       server-protect
Source service instance:   All instances
Target service name:       kms
Target service instance:   51042d7f-f0df-4915-bd39-6a49957c9175
Roles:                     Reader

이 명령에 사용할 수 있는 모든 매개변수에 대한 자세한 정보는 ibmcloud iam authorization-policy-create를 참조하십시오.

CLI에서 계정 간 암호화를 위한 서비스 간 인증 생성

계정 간 암호화를 위해 인증이 필요한 경우, 암호화 키를 소유한 대상 계정에서 인증을 만들어야 합니다. ibmcloud iam authorization-policy-create 명령을 실행하여, 소스 계정의 Block 서비스가 대상 계정의 키 관리 서비스( Key Protect )와 상호 작용할 수 있도록 권한 정책을 생성하십시오. 소스 서비스는 server-protect 이며, 대상 서비스는 kms 입니다. 할당해야 할 역할은 ‘ Reader ’입니다. 다음 예제는 Block 서비스와 Key Protect 간에 인증 정책을 생성합니다.

  1. 로컬 문서 폴더에 권한 부여 정책에 대한 다음 정보가 포함된 JSON 파일을 만듭니다.
    '{
       "description":"Reader and Delegator role for KeyProtect service instance",
       "resources": [
          {"attributes":[
             {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"},
             {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}],
       "roles": [
          {"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},
          {"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}],
       "subjects": [
          {"attributes": [
             {"name":"Cloud Block Storage","value":"server-protect"},
             {"name":"Account-B","value":"<Account-B-ID>"}]}],
       "type":"authorization",
    }'
    
  2. 그런 다음 JSON 파일을 사용하여 다음 CLI 명령을 실행합니다.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    
    교차 계정 인증은 단방향이며 키와 서비스에 한정되어 있습니다. 계정 A가 계정 B의 파일 서비스에서 자신의 키를 사용할 수 있도록 승인하면 계정 B는 계정 A의 CRK를 사용하여 계정 B의 공유를 암호화할 수 있습니다. 그러나 계정 A는 계정 B의 루트 키를 사용하여 계정 A의 공유를 암호화할 수 없습니다.

CLI에서 계정 간 복원을 위한 서비스 간 권한 부여 만들기

계정 간 데이터 복원을 위해 권한 부여가 필요한 경우, 스냅샷을 소유한 대상 계정에서 권한을 만들어야 합니다. ibmcloud iam authorization-policy-create 명령을 실행하여 소스 계정의 Block Storage 서비스가 대상 계정에서 만든 스냅샷을 사용하여 볼륨을 복원할 수 있도록 권한을 부여합니다. 수신 계정은 공유 스냅샷의 CRN으로 볼륨 복원을 시작하기 전에 관리자 사용자가 IAM에서 SnapshotRemoteAccountRestorer 역할을 가지고 있는지 확인해야 합니다.

  1. 로컬 문서 폴더에 권한 부여 정책에 대한 다음 정보가 포함된 JSON 파일을 만듭니다.
    '{
         "type":"authorization",
         "description":"Providing the Block Storage service access to restore from a Snapshot of another account ",
         "subjects": [{"attributes": [
                 {"name":"Block Storage for VPC","value":"server-protect"},
                 {"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}],
         "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}],
         "resources": [{"attributes": [
                 {"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"},
                 {"name":"snapshotId","operator":"stringEquals","value":"*"}]}],
    }'
    
  2. 그런 다음 JSON 파일을 사용하여 다음 CLI 명령을 실행합니다.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    

API를 사용하여 고객 관리 암호화를 위한 서비스 대 서비스 권한 부여 작성

IAM 정책 관리 API에 요청을 보내, 소스 볼륨의 블록 서비스가 키 관리 서비스(KMS) 인스턴스와 상호 작용할 수 있도록 서비스 간 인증을 생성하십시오.

  • 다음 예제는 독자 역할로 Key Protect 서비스 kms (대상) 와 상호작용하도록 블록 서비스 is.server-protect (소스) 에 권한을 부여하는 방법을 보여줍니다.

    curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H
    'Authorization: Bearer $TOKEN' -H
    'Content-Type: application/json' -d
    '{
      "type":"access",
      "description":"Reader role for the Block service to interact with the KeyProtect service.",
      "subjects": [{"attributes":[{"name":"Cloud Block Storage","value":"server-protect"}]}],
      "roles":[{"role_id":"crn:v1:bluemix:public:iam::::role:Reader"}],
      "resources":[{"attributes": [{"name":"KeyProtect","value":"kms"}]}]
      }'
    

API를 사용하여 계정 간 암호화를 위한 서비스 간 인증 생성

IAM 정책 관리 API에 요청을 보내, 소스 계정의 ‘ Block Storage ’ 서비스가 대상 계정의 키 관리 서비스(KMS) 인스턴스와 상호 작용할 수 있도록 서비스 간 인증을 생성하십시오. 요청은 KMS에서 고객 루트 키를 소유한 계정에서 이루어져야 합니다.

  • 다음 예에서는 블록 서비스에 권한을 부여하는 방법을 보여줍니다.is.server-protect 하나의 계정(소스)과 상호작용하려면Hyper Protect Crypto Services 서비스 hs-crypto 다른 계정(타겟)의_ 리더_ 그리고_ 권한 위임자_ 역할.

    curl -X POST "https://iam.cloud.ibm.com/v1/policies" \
      -H "Authorization: <Auth Token>" \
      -H 'Content-Type: application/json' \
      -d '{
         "type":"authorization",
         "description":"Reader and Delegator access to KeyProtect service instance",
         "subjects": [
           {"attributes":
             {"name":"Cloud Block Storage","value":"server-protect"},
             {"name":"Account-B","value":"<Account-B-ID>"}]}],
         "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},{"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}],
         "resources": [
           {"attributes":[
             {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"},
             {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}],
         }'
    

교차 계정 인증은 단방향이며 키와 서비스에 한정되어 있습니다. 계정 A가 계정 B의 파일 서비스에서 자신의 키를 사용할 수 있도록 승인하면 계정 B는 계정 A의 CRK를 사용하여 계정 B의 공유를 암호화할 수 있습니다. 그러나 계정 A는 계정 B의 루트 키를 사용하여 계정 A의 공유를 암호화할 수 없습니다.

API를 사용하여 계정 간 복원을 위한 서비스 간 인증 만들기

다음 API 요청은 소스 계정의 Block Storage 서비스가 대상 계정에서 만든 스냅샷을 사용하여 볼륨을 복원할 수 있도록 권한을 부여합니다. 이 호출은 스냅샷을 소유한 계정에서 발행해야 합니다. 수신 소스 계정은 공유 스냅샷의 CRN으로 볼륨 복원을 시작하기 전에 관리자 사용자가 IAM에서 SnapshotRemoteAccountRestorer 역할을 가지고 있는지 확인해야 합니다.

curl -X POST "https://iam.cloud.ibm.com/v1/policies"\
   -H 'Content-Type: application/json\
   -d '{
        "type":"authorization",
        "description":"Providing the Block Storage service access to restore from a Snapshot of another account ",
        "subjects": [{"attributes": [
                {"name":"BCloud Block Storage","value":"server-protect"},
                {"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}],
        "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}],
        "resources": [{"attributes": [
                {"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"},
                {"name":"snapshotId","operator":"stringEquals","value":"*"}]}],
   }'

특정 스냅샷에 대한 액세스를 제한하려면 리소스를 정의할 때 * 대신 스냅샷 ID를 사용하세요.

Terraform을 사용하여 고객 관리 암호화를 위한 서비스 대 서비스 권한 부여 작성

main.tf 파일에서 ibm_iam_authorization_policy 자원 인수를 사용하여 블록 서비스와 키 관리 서비스 간에 권한 부여 정책을 작성하십시오.

다음 예제는 적용된 경우 블록 서비스와 Key Protect 간에 권한 부여 정책을 작성합니다.

resource "ibm_iam_authorization_policy" "mypolicy4keyprotect" {
  source_service_name  = "server-protect"
  target_service_name  = "kms"
  roles                = ["Reader"]
}

인수 및 속성에 대한 자세한 정보는 권한 부여 리소스에 대한 Terraform 문서를 참조하십시오.

Terraform을 사용하여 계정 간 암호화를 위한 서비스 간 인증 생성

  1. Terraform은 두 개의 서로 다른 계정 구성을 지원합니다.IBM 공급자. 별칭이 없는 공급업체가 기본 공급업체로 간주됩니다. 다음 예시를 참조하십시오. 두 개의 IBM 계정이 지정되어 있으며, 두 번째 계정은 별칭을 사용합니다 team_account. 해당 구성은 다음과 같이 참조되어야 합니다.ibm.team_account 나중에.

    terraform {
      required_providers {
        ibm = {
          source = "IBM-Cloud/ibm"
          version = ">= 1.12.0"
        }
      }
    }
    provider "ibm" {
      ibmcloud_api_key = var.ibmcloud_api_key
      region           = var.region
      ibmcloud_timeout = var.ibmcloud_timeout
    }
    provider "ibm" {
      alias = "team_account"
      ibmcloud_api_key = var.ibmcloud_api_key_second_account
      region           = var.region
      ibmcloud_timeout = var.ibmcloud_timeout
    }
    

    인수 및 속성에 대한 자세한 내용은 다음을 참조하세요.IBM Cloud 공급자.

  2. 한 계정의 키 관리 서비스와 다른 계정의 블록 스토리지 서비스 간에 IAM 권한을 생성하려면 리소스를 사용하십시오.ibm_iam_authorization_policy. 다음 예제는 ‘ Key Protect ’ 서비스와 두 계정의 파일 서비스 간에 권한을 설정합니다.

    resource "ibm_iam_authorization_policy" "policy" {
        source_service_name = "server-protect"
        source_service_account = "<volume-account-id>"
        target_service_name = "kms"
        target_resource_instance_id = ibm_kms_key.key.instance_id
        roles               = ["Reader", "Authorization Delegator"]
        description         = "Authorization Policy"
    }
    

    이 Terraform 리소스에는 공급자 별칭도 포함되어야 합니다(이 예에서는 ibm.team_account ) 계정으로 ibmcloud_api_key 암호화 키가 속한 곳.

    인수 및 속성에 대한 자세한 내용은 다음을 참조하세요.ibm_iam_authorization_policy.

계정 간 복원을 위한 서비스 간 인증 생성 Terraform

  1. IBM 공급자에 대해 두 개의 IBM 계정을 구성합니다. 이전 절의 예시를 참고하십시오.

  2. 다른 계정에서 만든 스냅샷을 사용하여 볼륨을 복원하기 위해 한 계정의 Block Storage 서비스에 대한 IAM 권한을 생성하려면 리소스 ibm_iam_authorization_policy 을 사용하세요.

    resource "ibm_iam_authorization_policy" "policy" {
        source_service_name = "server-protect"
        source_service_account = "<volume-account-id>"
        target_service_name = "ibm_is_snapshot"
        target_resource_instance_id = ibm_is_snapshot.snapshot.instance_id
        target_service_account = "<snapshot-account-id>"
        roles               = ["SnapshotRemoteAccountRestorer"]
        description         = "Authorization Policy"
    }
    

    이 Terraform 리소스에는 공급자 별칭도 포함되어야 합니다(이 예에서는 ibm.team_account ) 계정으로 ibmcloud_api_key 암호화 키가 속한 곳.

    인수 및 속성에 대한 자세한 내용은 다음을 참조하세요.ibm_iam_authorization_policy.

다음 단계