IAM 인증 정보 작성
IBM Cloud® Secrets Manager을 사용하여 IAM 인증이 필요한 IBM Cloud 리소스에 액세스하기 위해 IAM 인증 정보를 동적으로 생성할 수 있습니다.
IAM 자격 증명은 IBM Cloud 리소스에 액세스하는 데 사용할 수 있는 동적 비밀입니다동적으로 작성되고 보호된 리소스에 대한 액세스에 필요한 액세스하기 위해 애플리케이션에 차용되는 고유한 값(예: 비밀번호 또는 API 키)입니다. 동적 시크릿이 차용 기간의 종료 시점에 도달하면 보호된 리소스에 대한 액세스가 취소되고 시크릿이 자동으로 삭제됩니다.. IAM 인증 정보 세트는 보호된 리소스를 읽거나 액세스할 때마다 생성되는 서비스 ID와 API 키로 구성됩니다. 시크릿이 존재하는 시간을 단축할 수 있도록 작성 시 IAM 인증 정보의 TTL(Time-To-Live) 또는 임대 기간을 정의할 수 있습니다.
Secrets Manager에서 관리할 수 있는 시크릿 유형에 대한 자세한 정보는 시크릿의 개념을 참조하십시오.
시작하기 전에
시작하기 전에 필수 액세스 레벨이 있는지 확인하십시오. 시크릿을 작성하거나 추가하려면 작성자 서비스 역할 이상이 필요합니다.
IAM 자격 증명은 서비스에서 만들거나 관리하기 전에 구성 단계를 거쳐야 합니다. 자세한 정보는 IAM 인증 정보 엔진 구성을 참조하십시오.
IAM 신임 정보 시크릿의 TTL을 변경할 때 다음 시크릿 버전 회전에만 적용됩니다.
Secrets Manager 에서 생성하는 IAM 자격 증명 비밀은 IAM API 키의 이름이기도 합니다. 예를 들어, my-secret-name 이라는 비밀 번호에는 Secrets-Manager-IAM-Secret-my-secret-name 라는 일치하는 API 키가 있습니다. 나중에 Secrets Manager 에서 비밀의 이름을 변경하는 경우 이 변경 사항은 IAM에 반영되지
않지만 기능은 중단되지 않습니다.
계정 관리자(또는 필요한 수준의 액세스 권한이 있는 모든 엔터티)는 Secrets Manager 에서 만들고 관리하는 IAM 자격 증명을 외부에서 변경할 수 있습니다. 이러한 서비스 ID 또는 API 키가 Secrets Manager 외부에서 삭제되면 서비스가 예기치 않게 작동할 수 있습니다. 예를 들어, 신임 정보를 작성하거나 순환할 수 없습니다.
UI에서 IAM 인증 정보 작성
Secrets Manager UI를 사용하여 IAM 인증 정보를 작성하려면 다음 단계를 완료하십시오.
-
콘솔에서 메뉴 아이콘
> 리소스 목록을 클릭하십시오.
-
서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.
-
시크릿 표에서 추가를 클릭하십시오.
-
시크릿 유형 목록에서 IAM 인증 정보 타일을 클릭하십시오.
-
다음 을 클릭하십시오.
-
시크릿을 쉽게 식별할 수 있도록 이름 및 설명을 추가하십시오.
-
비밀에 할당할 비밀 그룹을인스턴스의 포함 시크릿이 준수해야 하는 환경 및 제한조건입니다. 액세스 및 협업을 사용하기 위해 사용자를 시크릿 그룹과 연관시킬 수 있습니다. 선택합니다.
시크릿 그룹이 아직 없습니까? 시크릿 그룹 필드에서 작성을 클릭하여 새 그룹의 이름과 설명을 제공할 수 있습니다. 시크릿은 새 그룹에 자동으로 추가됩니다. 시크릿 그룹에 대한 자세한 정보는 시크릿 구성을 확인하십시오.
-
선택사항: 인스턴스에서 유사한 시크릿을 검색하는 데 도움이 되는 레이블을 추가하십시오.
-
선택사항: 시크릿 또는 시크릿의 특정 버전에 메타데이터를 추가하십시오.
- 파일을 업로드하거나 메타데이터 및 버전 메타데이터를 JSON 형식으로 입력하십시오.
-
다음 을 클릭하십시오.
-
시크릿에 대한 임대 기간 또는 TTL(Time-To-Live)을 설정하십시오.
IAM 인증 정보에 대한 임대 기간을 설정하여 연관된 API 키가 유효한 기간을 결정합니다. IAM 인증 정보의 임대 기간이 끝나면 자동으로 이 인증 정보가 취소됩니다.
최소 지속 기간은 1분입니다. 최대 90일입니다.
- 선택사항: 시크릿에 IAM 인증 정보를 재사용할 수 있는지 판별하십시오.
- 선택사항: 시크릿의 자동 회전을 사용으로 설정하십시오. IAM 자격증명 재사용 옵션을 선택한 경우에만 비밀번호를 자동으로 회전할 수 있습니다.
- 다음 을 클릭하십시오.
- 소스 계정을 결정합니다.
- 액세스 범위 결정 을 할당합니다.
- 다음 을 클릭하십시오.
- 시크릿의 세부사항을 검토하십시오.
- 추가 를 클릭하십시오.
임대가 만료될 때까지 동일한 API 키 재사용
IAM 인증 정보는 서비스 ID와 API 키로 구성됩니다. 기본적으로 서비스 ID와 API 키는 IAM 인증 정보 시크릿을 읽거나 액세스할 때마다 생성되고 삭제되는 일회용 임시 값입니다.
시크릿 임대가 종료될 때까지 해당 인증 정보를 계속 사용하려면 임대 만기까지 IAM 인증 정보 재사용을 켜짐으로 설정할 수 있습니다. 이 옵션을 활성화하면 시크릿이 유효한 동안 현재 서비스 ID와 API 키 값을 유지하며 각 읽기에서 해당 값을 재사용합니다. 시크릿의 임대 기간이 끝나면 인증 정보가 자동으로 취소됩니다.
IAM 자격증명 재사용 옵션이 꺼짐으로 설정되어 있으면 비밀에 대한 수동 로테이션이 지원되지 않습니다. 자세한 정보는 수동 순환 시크릿 을 참조하십시오.
소스 계정 확인
Secrets Manager는 현재 IBM Cloud 계정 또는 특정 IBM Cloud 계정에서 IAM 자격증명 비밀을 만들고 관리할 수 있습니다. 특정 계정에서 만들기를 선택하는 경우 해당 계정의 ID를 입력합니다.
할당할 액세스 범위를 결정합니다
서비스 ID를 선택하여 API 키를 생성하려는 서비스 ID가 계정에 이미 있을 수 있습니다. 또는 액세스 그룹에 액세스 권한을 할당하여 서비스 ID와 API 키를 모두 생성할 수 있습니다.
IAM 자격증명 만들기 마법사의 액세스 할당 단계에서 비밀에 대한 액세스 범위를 선택합니다.
-
기존 서비스 ID를 사용하려면 목록에서 ID를 선택하십시오. 소스 계정이 특정 다른 계정인 경우 서비스 ID의 ID를 다음 형식으로 입력합니다:
ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0.Secrets Manager가 서비스 ID 자체가 아닌 IAM 인증 정보 시크릿의 API 키만 생성하고 관리해야 하는 경우 이 옵션을 선택하십시오. API 키는 사용자 계정에서 선택한 서비스 ID의 액세스 정책을 상속합니다. 액세스 권한이 있는 서비스 ID만 표시됩니다.
-
시크릿에 대한 새 서비스 ID 및 API 키를 모두 생성하려면 액세스 그룹을 선택하십시오. 소스 계정이 특정 계정인 경우 원하는 액세스 그룹의 ID를 입력합니다.
액세스 그룹을 선택하면 액세스 그룹을 사용하여 서비스 ID 및 API 키에 할당되는 권한의 범위를 결정합니다. 서비스 ID 및 API 키가 생성되어 새 IAM 자격 증명과 연결됩니다. 최대 10개 액세스 그룹을 지정할 수 있습니다.
액세스 정책은 선택한 액세스 그룹에 할당해야 하며 서비스 ID에 직접 할당해서는 안 됩니다. IAM 자격 증명의 TTL에 도달하면 서비스 ID와 API 키가 모두 삭제되고 새 키가 만들어집니다.
기존 서비스 ID를 사용한 경우 Secrets Manager 에서 생성한 API 키는 자동으로 잠깁니다. 액세스 그룹을 선택한 경우 Secrets Manager 에서 비밀로 생성하는 새 서비스 ID와 API 키가 모두 자동으로 잠깁니다. API를 사용하여 IAM 자격증명 비밀을 검색 할 때마다 API 키와 Secrets Manager 에서 생성하는 서비스 ID는 비밀을 검색하기 전에 수동으로 잠금을 해제하더라도 잠겨 있습니다.
CLI에서 IAM 인증 정보 작성
시작하기 전에 CLI 문서에 따라 API 엔드포인트를 설정하세요.
Secrets Manager CLI 플러그인을 사용하여 서비스 ID와 API 키를 만들려면 다음 명령을 실행합니다 ibmcloud secrets-manager secret-create 명령을 실행합니다. 다른 특정 계정에서 만들려면 --iam-credentials-account-id 옵션을 추가합니다.
ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-access-groups ["<access_group_id>, ..."] --secret-ttl 30m --iam-credentials-reuse-apikey true
기존 서비스 ID를 사용하고 Secrets Manager CLI 플러그인을 사용하여 API 키를 생성하려면 ibmcloud secrets-manager secret-create 명령을 실행합니다. 다른 특정 계정에서 만들려면 --iam-credentials-account-id 옵션을 추가합니다.
ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-service-id "ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0" --secret-ttl 90d --iam-credentials-reuse-apikey true
콘솔의 IAM 섹션에서 서비스 ID의 ID 값을 찾을 수 있습니다. 관리 > 액세스(IAM) > 서비스 ID > 이름으로 이동합니다. 세부 정보를 클릭하여 ID를 확인합니다.
명령은 다른 메타데이터와 함께 시크릿의 ID 값을 출력합니다. 명령 옵션에 대한 자세한 정보는 ibmcloud secrets-manager secret-create의
내용을 참조하십시오.
임대가 만료될 때까지 동일한 API 키 재사용
시크릿 임대가 종료될 때까지 IAM 자격 증명을 계속 사용하려면 --iam-credentials-reuse-apikey 옵션을 사용할 수 있습니다. true 으로 설정하면 비밀이 유효한 동안 현재 서비스 ID와 API 키 값을 유지하고 읽을 때마다 재사용하며, 그렇지 않으면 false 으로 설정합니다. 예를 들어, 다음 예제 명령은 만료될 때까지 재사용할
수 있는 IAM 자격 증명을 만듭니다.
ibmcloud secrets-manager secret-create --secret-type iam_credentials --secret-name "example-iam-credentials-secret" --secret-description "Description of my IAM credentials secret" --iam-credentials-service-id "<iam_id_of_service_id>" --secret-ttl 30m --iam-credentials-reuse-apikey true
명령은 다른 메타데이터와 함께 시크릿의 ID 값을 출력합니다. 시크릿의 임대 기간이 끝나면 인증 정보가 자동으로 취소됩니다. 명령 옵션에 대한 자세한 정보는 ibmcloud secrets-manager secret-create의
내용을 참조하십시오.
--iam-credentials-reuse-apikey 을 false 으로 설정한 경우, 비밀에 대한 수동 로테이션이 지원되지 않습니다. 자세한 정보는 수동으로 시크릿 순환을 참조하십시오.
API를 사용하여 IAM 인증 정보 작성
Secrets Manager API를 호출하여 IAM 인증 정보를 프로그래밍 방식으로 작성할 수 있습니다.
다음 예는 서비스 ID 및 API 키를 만드는 데 사용할 수 있는 쿼리를 보여줍니다. API를 호출할 때 ID 변수와 IAM 토큰을 Secrets Manager 인스턴스에 고유한 값으로 바꾸십시오. 다른 특정 계정에서 만들려면 account_id 필드를 추가합니다.
custom_metadata 및 version_custom_metadata 요청 매개변수를 사용하여 조직의 요구사항과 관련된 메타데이터를 저장할 수 있습니다. version_custom_metadata 의 값은 시크릿 버전에 대해서만 리턴됩니다. 시크릿의 사용자 정의 메타데이터는 최대 50개의 버전에 대해 다른 모든 메타데이터로 저장되며 기밀 데이터를 포함하지
않아야 합니다.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
{
"name": "example-iam-credentials-secret",
"description": "Description of my IAM Credentials secret",
"secret_type": "iam_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"ttl": "30m",
"access_groups": [
"AccessGroupId-45884031-54be-4dd7-86ff-112511e92699",
"AccessGroupId-8c0ed733-dfee-4a94-992b-e2247b86e2a2"
],
"reuse_api_key": false,
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
성공적 응답은 다른 메타데이터와 함께 시크릿의 ID 값을 리턴합니다. 필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.
임대가 만료될 때까지 동일한 API 키 재사용
시크릿 임대가 종료될 때까지 IAM 자격 증명을 사용하려면 reuse_api_key 필드를 사용하면 됩니다. true(으)로 설정하면 시크릿에 현재 서비스 ID와 API 키 값이 보존되고 시크릿이 유효한 동안 각 읽기에서 해당 값을 재사용합니다. 예를 들어, 다음 예제 명령은 만료될 때까지 재사용할 수 있는 IAM 자격 증명을 만듭니다.
custom_metadata 및 version_custom_metadata 요청 매개변수를 사용하여 조직의 요구사항과 관련된 메타데이터를 저장할 수 있습니다. version_custom_metadata 의 값은 시크릿 버전에 대해서만 리턴됩니다. 시크릿의 사용자 정의 메타데이터는 최대 50개의 버전에 대해 다른 모든 메타데이터로 저장되며 기밀 데이터를 포함하지
않아야 합니다.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
{
"name": "example-iam-credentials-secret",
"description": "Description of my IAM Credentials secret",
"secret_type": "iam_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"ttl": "30m",
"access_groups": [
"AccessGroupId-45884031-54be-4dd7-86ff-112511e92699",
"AccessGroupId-8c0ed733-dfee-4a94-992b-e2247b86e2a2"
],
"reuse_api_key": true,
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
성공적인 요청은 다른 메타데이터와 함께 시크릿의 ID 값을 리턴합니다. 시크릿의 임대 기간이 끝나면 인증 정보가 자동으로 취소됩니다. 자세한 정보는 API 참조를 확인하십시오.
reuse_api_key이(가) IAM 신임 정보에 대한 false인 경우 시크릿에 대한 수동 회전은 지원되지 않습니다. 자세한 정보는 수동으로 시크릿 순환을 참조하십시오.
계정에 있는 기존 서비스 ID 사용
API 키를 동적으로 생성하는 데 사용하려는 서비스 ID가 이미 계정에 있을 수 있습니다. 이 시나리오에서는 사용자 고유 서비스 ID를 가져와서 IAM 인증 정보를 작성하도록 선택할 수 있습니다. 예를 들어, 다음 명령은 service_id 필드를 사용하여 IAM 신임 정보를 작성합니다. 다른 특정 계정에서 만들려면 account_id 필드를 추가합니다.
custom_metadata 및 version_custom_metadata 요청 매개변수를 사용하여 조직의 요구사항과 관련된 메타데이터를 저장할 수 있습니다. version_custom_metadata 의 값은 시크릿 버전에 대해서만 리턴됩니다. 시크릿의 사용자 정의 메타데이터는 최대 50개의 버전에 대해 다른 모든 메타데이터로 저장되며 기밀 데이터를 포함하지
않아야 합니다.
콘솔의 IAM 섹션에서 서비스 ID의 ID 값을 찾을 수 있습니다. 관리 > 액세스(IAM) > 서비스 ID > 이름으로 이동합니다. 세부 정보를 클릭하여 ID를 확인합니다.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "example-iam-credentials-secret",
"description": "Description of my IAM Credentials secret",
"secret_type": "iam_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"ttl": "30m",
"service_id": "ServiceId-c0c7cfa4-b24e-4917-ad74-278f2fee5ba0,
"reuse_api_key": false,
"custom_metadata": {
"metadata_custom_key": "metadata_custom_value"
},
"version_custom_metadata": {
"custom_version_key": "custom_version_value"
}
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
성공적인 요청은 다른 메타데이터와 함께 시크릿의 ID 값을 리턴합니다. 자세한 정보는 API 참조를 확인하십시오.
Terraform을 사용하여 IAM 인증 정보 작성
Secrets Manager에 대해 Terraform을 사용하여 프로그래밍 방식으로 IAM 인증 정보를 작성할 수 있습니다.
depends_on Terraform 메타 인수를 추가하고 IAM 구성 리소스를 참조해야 합니다. depends_on 메타 인수는 IAM 인증 정보 시크릿에서 조치를 수행하기 전에 IAM 구성에서 모든 조치를 완료하도록 Terraform에 지시합니다. 교차 계정 IAM 자격 증명 비밀을 만들 때 서비스 ID가 생성된 IBM Cloud 계정을 가리키는 account_id 속성을 포함하세요.
다음 예제는 IAM 인증 정보를 작성하는 데 사용할 수 있는 구성을 표시합니다.
resource "ibm_sm_iam_credentials_secret" "test_iam_credentials_secret" {
instance_id = local.instance_id
region = local.region
service_id = "ServiceId-f4b2deac-fbb5-4bf7-85de-88426701db97"
ttl = "1800"
name = "test-iam-credentials-secret"
reuse_api_key = true
secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
depends_on = [
ibm_sm_iam_credentials_configuration.iam_credentials_configuration
]
}
일관된 버전 제어 배포를 위해 Secrets Manager Secret용 Terraform IBM 모듈(TIM)로 IAM 자격증명 생성을 자동화하세요. Terraform IBM 모듈에 대해 알아보세요.
IAM 인증 정보 삭제
IAM 인증 정보 시크릿 엔진에서 생성된 서비스 ID 또는 API키가 있고 Secrets Manager의 인스턴스를 삭제하는 경우 IAM에서 시크릿도 삭제해야 합니다. 자세한 정보는 사용자 API 키 관리를 참조하십시오.