서비스 인증 정보 작성

IBM Cloud® Secrets Manager 을 사용하여 인증이 필요한 IBM Cloud 리소스에 액세스하는 데 사용할 수 있는 서비스 자격 증명을 만들 수 있습니다.

서비스 신임 정보는 Identity and Access Management 에서 발행한 신임 정보를 보유할 수 있습니다. 자격 증명은 HMAC 키, 데이터베이스 사용자 ID 및 비밀번호, SASL 자격 증명 또는 TLS 인증서와 같은 서비스별 기본 자격 증명이 될 수도 있습니다. Secrets Manager 를 사용하여 관리할 수 있는 시크릿의 유형에 대해 자세히 알아보려면 “시크릿이란 무엇인가? ”를 참조하세요.

지원되는 IBM Cloud 서비스

다음 IBM Cloud 서비스에 대해 Secrets Manager 를 통해 서비스 인증 정보를 작성할 수 있습니다.

시작하기 전에

시작하기 전에 필수 액세스 레벨이 있는지 확인하십시오. 시크릿을 작성하거나 추가하려면 작성자 서비스 역할 이상이 필요합니다.

계정 관리자 또는 필요한 수준의 액세스 권한이 있는 단체는 Secrets Manager 에서 만들고 관리하는 서비스 자격 증명을 외부에서 변경할 수 있습니다. 이러한 자격 증명이 Secrets Manager 외부에서 삭제되면 서비스가 예기치 않게 작동할 수 있습니다. 예를 들어, 신임 정보를 작성하거나 순환할 수 없습니다.

데이터베이스에 대해 작성된 서비스 신임 정보의 경우 신임 정보 외에 작성된 신임 정보에 대한 데이터베이스 권한도 변경하는 경우 서비스 신임 정보가 순환된 후에는 동기화되지 않습니다. 데이터베이스 서비스 신임 정보를 순환할 때 이는 ID 순환으로 간주됩니다.

서비스 신임 정보 시크릿의 TTL을 변경할 때 다음 시크릿 버전 순환에만 적용됩니다.

Secrets Manager 에서 생성하는 서비스 자격 증명 비밀은 리소스 키의 이름이기도 합니다. 예를 들어 my-secret-name 이라는 Cloud Object Storage 에 대한 서비스 자격 증명 비밀은 Cloud Object Storage 에 my-secret-name 이라는 리소스 키와 일치하는 리소스 키를 갖습니다. 나중에 Secrets Manager 에서 비밀의 이름을 변경하는 경우 이 변경 사항은 리소스 키에 반영되지 않지만 기능은 중단되지 않습니다.

서비스 인증 정보에 대한 IAM 서비스 액세스 역할 지정

서비스 자격 증명을 만들려면 IAM 서비스 액세스 역할을 선택해야 합니다. 선택할 수 있는 역할은 지원되는 서비스마다 다를 수 있습니다. 관련 문서는 지원되는 서비스 목록을 참조하십시오. 그러면 선택한 역할이 기존 서비스 ID 또는 자동 생성된 ID일 수 있는 IAM Service ID 에 첨부됩니다.

시크릿 회전이 발생하면 서비스 ID가 계속 사용됩니다. 시크릿을 삭제하는 경우 기존 서비스 ID는 삭제되지 않지만 자동 생성된 서비스 ID는 삭제됩니다.

기존 서비스 ID를 사용하도록 선택하는 경우 해당 서비스 액세스 정책을 사전 구성할 수도 있습니다. 이 경우 시크릿을 작성할 때 역할로 없음 을 선택하십시오. IAM 정책에 대해 자세히 알아보십시오.

서비스 신임 정보 우수 사례

프로덕션 유스 케이스에 대한 최소 권한 액세스 원칙을 적용하는 것이 좋습니다.

  1. 서비스 대 서비스 권한 부여를 설정할 때 구체적인 소스 및 대상 서비스 인스턴스사이에 정의되어야 하며 모든 서비스 사이에 정의되지 않아야 합니다.
  2. 서비스 신임 정보와 함께 사용할 서비스 ID에 대한 액세스를 수동으로 설정하는 경우 구체적인 서비스 인스턴스에 적용해야 합니다.

UI에서 서비스 자격 증명 생성하기

Secrets Manager UI를 사용하여 서비스 자격 증명을 생성하려면 다음 단계를 따르십시오.

  1. 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 리소스 목록을 클릭하십시오.

  2. 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.

  3. 시크릿 표에서 추가를 클릭하십시오.

  4. 비밀 유형 목록에서 ‘서비스 자격 증명’ 타일을 클릭합니다.

  5. 다음 을 클릭하십시오.

  6. 시크릿을 쉽게 식별할 수 있도록 이름 및 설명을 추가하십시오.

  7. 해당 시크릿에 할당할 시크릿 그룹을인스턴스의 포함 시크릿이 준수해야 하는 환경 및 제한조건입니다. 액세스 및 협업을 사용하기 위해 사용자를 시크릿 그룹과 연관시킬 수 있습니다. 선택하세요.

    시크릿 그룹이 아직 없습니까? 시크릿 그룹 필드에서 작성을 클릭하여 새 그룹의 이름과 설명을 제공할 수 있습니다. 시크릿은 새 그룹에 자동으로 추가됩니다. 시크릿 그룹에 대한 자세한 정보는 시크릿 구성을 확인하십시오.

  8. 선택사항: 인스턴스에서 유사한 시크릿을 검색하는 데 도움이 되는 레이블을 추가하십시오.

  9. 다음에 대한 자격 증명을 만들 서비스 및 서비스 인스턴스를 선택합니다

    처음으로 서비스 인스턴스를 선택하거나 서비스 CRN을 제공한 경우 먼저 Secrets Manager 에 액세스 권한을 부여하십시오.

    1. 인증을 클릭하고 키 관리자를 선택합니다
  10. 다음 을 클릭하십시오.

  11. 선택한 서비스에 따라 요청된 입력을 제공하십시오.

  12. 선택사항: 시크릿 또는 시크릿의 특정 버전에 메타데이터를 추가하십시오.

    1. 파일을 업로드하거나 메타데이터 및 버전 메타데이터를 JSON 형식으로 입력하십시오.
  13. 선택 사항: 시크릿에 대한 임대 기간 또는 유효 기간(TTL)을 설정합니다.

    서비스 자격 증명의 임대 기간을 설정함으로써, 해당 자격 증명이 유효한 기간을 결정할 수 있습니다. 서비스 자격 증명의 임대 기간이 만료되면 자동으로 취소됩니다.

  14. 선택사항: 시크릿의 자동 회전을 사용으로 설정하십시오.

  15. 다음 을 클릭하십시오.

  16. 시크릿의 세부사항을 검토하십시오.

  17. 추가 를 클릭하십시오.

CLI를 사용하여 서비스 자격 증명 생성하기

Secrets Manager CLI 플러그인을 사용하여 서비스 신임 정보 시크릿을 작성하려면 ibmcloud secrets-manager secret-create 명령을 실행하십시오. --secret-type service_credentials 옵션을 사용하여 시크릿의 유형을 지정할 수 있습니다. 예를 들어, 다음 명령은 HMAC 지원을 사용하여 Cloud Object Storage 인스턴스에 대한 서비스 인증 정보를 작성합니다. 또한 이 자격 증명을 제공할 IAM 역할을 지정할 수 있습니다(예: Writer).

ibmcloud secrets-manager secret-create --secret-type="service_credentials" --secret-name="example-service-credentials-secret" --secret-source-service='{"instance": {"crn": "CRN of the instance to create a credential for"},"parameters": {"HMAC": true},"role": {"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"}}'

명령은 다른 메타데이터와 함께 시크릿의 ID 값을 출력합니다. 명령 옵션에 대한 자세한 정보는 ibmcloud secrets-manager secret-create의 내용을 참조하십시오.

API를 사용하여 서비스 자격 증명 생성하기

Secrets Manager API를 호출하여 프로그래밍 방식으로 서비스 자격 증명을 생성할 수 있습니다.

custom_metadataversion_custom_metadata 요청 매개변수를 사용하여 조직의 요구사항과 관련된 메타데이터를 저장할 수 있습니다. version_custom_metadata 의 값은 시크릿 버전에 대해서만 리턴됩니다. 시크릿의 사용자 정의 메타데이터는 최대 50개의 버전에 대해 다른 모든 메타데이터로 저장되며 기밀 데이터를 포함하지 않아야 합니다.

다음 예에서는 Cloud Object Storage 에 대한 서비스 자격 증명을 만들고, 기존 서비스 ID의 IAM ID가 있는 사용자 지정 매개 변수를 사용하며, HMAC을 사용하도록 설정합니다. 또한 이 자격 증명을 제공할 IAM 역할을 지정할 수 있습니다(예: Writer).

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      {
        "name": "example-service-credentials-secret",
        "description": "Description of my Service Credentials secret",
        "secret_type": "service_credentials",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
          "dev",
          "us-south"
        ],
        "source_service": {
          "instance": {
            "crn": "CRN of the instance to create a credential for"
          },
          "parameters": {
            "serviceid_crn": "Existing Service ID's IAM ID",
            "HMAC": true
          },
          "role": {
            "crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
          }
        }
      }' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

성공적 응답은 다른 메타데이터와 함께 시크릿의 ID 값을 리턴합니다. 필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.

Terraform을 이용한 서비스 자격 증명 생성

Secrets Manager Terraform을 사용하여 서비스 자격 증명을 프로그래밍 방식으로 생성할 수 있습니다. 다음 예는 Cloud Object Storage 에 대한 서비스 자격 증명 자격 증명을 생성하는 데 사용할 수 있는 구성을 보여줍니다.

    resource "ibm_sm_service_credentials_secret" "my_service_credentials_secret" {
      instance_id = "local.instance_id"
      region = "local.region"
      name = "example-service-credentials-secret"
      secret_group_id = "ibm_sm_secret_group.sm_secret_group_test.secret_group_id"
      description = "Description of my Service Credentials secret"
      ttl = "24h"
      source_service {
        role = {
          crn = "crn:v1:bluemix:public:iam::::serviceRole:Writer"
        },
        instance = {
          crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/347df6de25020f0fa8b711c6d9881111:f35e85fc-3d4d-476e-8547-51222e3c1111::"
        },
        parameters = {
          HMAC: true
        }
      }
      rotation {
        auto_rotate = true
        interval = 1
        unit = "day"
      }
    }

Secrets Manager 비밀을 위한 Terraform IBM 모듈(TIM)을 사용하여 자동화된 로테이션으로 서비스 자격 증명을 배포합니다. 예제는 Terraform IBM 모듈을 확인하세요.