사용자 API 키 관리
페더레이션 사용자 또는 비페더레이션 사용자는 CLI에서 또는 자동화의 일부로 사용할 API 키를 생성하여 사용자 아이디로 로그인할 수 있습니다. 콘솔, CLI 또는 API를 사용하여 키 목록, 키 생성, 키 업데이트 또는 키 삭제를 통해 IBM Cloud® API 키를 관리할 수 있습니다.
API 키는 작성된 사용자 ID에 지정된 모든 액세스 권한을 상속하고, API 키는 사용자에게 지정된 모든 정책을 상속하므로 액세스 권한은 API 키가 작성된 계정으로만 제한되지 않습니다. 그러므로 사용자에게 다중 계정의 리소스에 대한 액세스 권한이 있는 경우 API 키가 모든 계정에서 액세스를 상속합니다. 그러므로 사용자의 API 키는 API 키가 작성된 계정 외부에 대해 사용자가 액세스 권한을 가지는 리소스에 액세스하고 토큰을 생성하는 데 사용할 수 있습니다.
사용자 아이디와 연결된 API 키는 회원님이 회원으로 가입한 모든 계정에 대한 모든 액세스 권한을 갖습니다. 따라서 API 키를 사용하는 방식에 주의해야 합니다. 예를 들어, IBM Cloud 서비스는 사용자를 대신해야 하거나 IAM 사용이 아닌 서비스에 액세스해야 할 수 있으므로 서비스는 사용자 API 키를 요청할 수 있습니다. 이러한 경우 서비스 작업에 필요한 최소 수준의 액세스 권한이 할당된 기능 ID와 연결된 API 키를 만드세요.
기능 ID는 프로그램, 애플리케이션 또는 서비스를 표시하기 위해 작성된 사용자 ID입니다. 기능 ID가 계정에 초대될 수 있으며 특정 리소스 또는 애플리케이션과의 상호작용과 같은 특정 목적으로만 액세스 지정될 수 있습니다. 기능 ID는 작성된 특정 기능에 필요한 단일 계정에서 최소 레벨 액세스로만 권한 부여되어야 합니다.
신뢰 프로파일을 적용 중인 경우 사용자 API 키를 작성할 수 없습니다. 계속해서 다른 모든 API 키를 작성하고 관리할 수 있습니다. 예를 들어, 서비스 ID API 키입니다. 자세한 내용은 IAM에 대한 자주 묻는 질문 을 참조하세요.
사용자 API 키 관리
사용자 ID와 연결된 IBM Cloud API 키 또는 계정의 다른 사용자를 위해 관리할 수 있는 액세스 권한이 있는 키를 관리하려면 IBM Cloud 콘솔에서 관리 > 액세스(IAM ) > API 키로 이동하세요. API 키 페이지에서 IBM Cloud API 키를 직접 생성, 편집 또는 삭제할 수 있습니다. 또한 사용자 계층 구조에서 조상인 사용자에 대한 모든 클래식 인프라 API 키를 관리할 수도 있습니다. 또한 계정 소유자이거나 계정에서 다른 사용자의 API 키를 관리할 수 있는 필수 액세스 권한이 지정된 사용자인 경우 보기 필터를 사용하여 이러한 API 키도 나열하고 관리할 수 있습니다.
| 필터 옵션 | 표시된 API 키 | 필수 액세스 권한 | 허용된 조치 |
|---|---|---|---|
| 내 IBM Cloud API 키 | IBM Cloud API 키 | 액세스 권한이 필요하지 않음 | 보기, 작성, 편집, 삭제 |
| 모든 사용자 IBM Cloud API 키 | 계정의 모든 사용자가 작성한 모든 IBM Cloud API 키 | IAM ID 서비스의 관리자 역할 | 보기, 편집 및 삭제 |
콘솔에서 API 키 작성
IBM Cloud 사용자는 스크립트에 비밀번호를 제공하지 않고 API 키를 사용하여 프로그램 또는 스크립트를 사용할 수 있습니다. API 키를 사용하면 사용자나 조직이 여러 프로그램에 대해 여러 개의 API 키를 만들 수 있다는 이점이 있습니다. API 키가 손상된 경우 다른 API 키나 사용자에 대한 간섭 없이 독립적으로 삭제할 수 있습니다. 최대 20개의 API 키를 작성할 수 있습니다.
UI에서 사용자 ID의 API 키를 작성하려면 다음 단계를 완료하십시오.
- IBM Cloud 콘솔에서 관리 > 액세스(IAM) > API 키로 이동하십시오.
- IBM Cloud API 키 작성을 클릭하십시오.
- API 키의 이름과 설명을 입력하십시오.
- 작성을 클릭하십시오.
- 그런 다음 표시를 클릭하여 API 키를 표시하십시오. 또는 복사를 클릭하여 나중을 위해 복사하여 저장하거나 다운로드를 클릭하십시오.
보안상의 이유로 인해 API 키는 작성 시에만 복사 또는 다운로드에 사용 가능합니다. API 키를 유실한 경우에는 새 API 키를 작성해야 합니다.
CLI를 사용하여 API 키 작성
CLI를 사용하여 API 키를 작성하려면 다음 명령을 사용하십시오.
ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE]을 입력하고 키의 이름, 설명, 저장할 파일을 지정합니다. 다음 예를 참조하십시오.
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"
--action-if-leaked 의 경우 사용 가능한 값은 "NONE", "DISABLE" 또는 "DELETE"입니다. 기본 동작은 "사용 안 함"입니다.
- 비활성화: 키를 비활성화하면 해당 키의 인증 및 서비스 액세스 기능이 즉시 차단됩니다. 필요한 경우 나중에 키를 다시 활성화할 수 있습니다.
- 삭제: API 키가 계정에서 영구적으로 삭제되며 더 이상 인증에 사용할 수 없습니다. 이 조치는 실행 취소할 수 없습니다.
- 없음: 키가 활성 상태로 유지되며 리소스에 액세스하는 데 계속 사용할 수 있습니다.
API를 사용하여 API 키 작성
API 키를 만들려면 다음 예시와 같이 IAM Identity Service API를 호출합니다:
curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
"name": "My-apikey",
"description": "my personal key",
"iam_id": "IBMid-123WEREW",
"account_id": "ACCOUNT_ID"
"store_value": false
"action_when_leaked": "delete"
"support_sessions": false
}'
CreateApiKeyOptions createApiKeyOptions = new CreateApiKeyOptions.Builder()
.name(apiKeyName)
.iamId(iamId)
.description("Example ApiKey")
.build();
Response<ApiKey> response = service.createApiKey(createApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
apikeyId = apiKey.getId();
System.out.println(apiKey.toString());
const params = {
name: apikeyName,
iamId: iamId,
description: 'Example ApiKey',
};
iamIdentityService.createApiKey(params)
.then(res => {
apikeyId = res.result.id
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
api_key = iam_identity_service.create_api_key(
name=apikey_name,
iam_id=iam_id
).get_result()
apikey_id = api_key['id']
print(json.dumps(api_key, indent=2))
createAPIKeyOptions := iamIdentityService.NewCreateAPIKeyOptions(apikeyName, iamID)
createAPIKeyOptions.SetDescription("Example ApiKey")
apiKey, response, err := iamIdentityService.CreateAPIKey(createAPIKeyOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", " ")
fmt.Println(string(b))
apikeyID = *apiKey.ID
action_when_leaked 의 경우 사용 가능한 값은 "없음", "사용 안 함" 또는 "삭제"입니다. 기본 동작은 "사용 안 함"입니다.
- 비활성화합니다: 키를 비활성화하면 즉시 인증 및 서비스 액세스 기능이 차단됩니다. 필요한 경우 나중에 키를 다시 활성화할 수 있습니다.
- 삭제합니다: API 키가 계정에서 영구적으로 삭제되며 더 이상 인증에 사용할 수 없습니다. 이 조치는 실행 취소할 수 없습니다.
- 없음: 키가 활성 상태로 유지되며 리소스에 액세스하는 데 계속 사용할 수 있습니다.
support_sessions 의 경우 API 키에 대한 CLI 로그인 세션을 관리할 수 있는지 여부를 정의합니다:
- 참입니다: 이 API 키에 대한 로그인 세션을 생성하고, 세션을 검토하거나 취소하여 관리할 수 있습니다. 자세한 내용은 로그인 세션 모니터링하기를 참조하세요.
- false: 세션이 생성되거나 추적되지 않습니다. 로그인을 취소하거나 검토할 수 없으며, 접근을 차단하려면 API 키 자체를 삭제하거나 회전해야 합니다.
시작하기 전에
Terraform을 사용하여 사용자 API 키를 관리하려면 먼저 다음 단계를 완료해야 합니다:
- Terraform CLI를 설치하고 IBM Cloud 제공자 플러그인을 구성합니다. 자세한 내용은 테라폼 시작하기 IBM Cloud® 튜토리얼을 참조하세요. 플러그인은 이 태스크를 완료하는 데 사용되는 IBM Cloud API를 요약합니다.
- 이름이
main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서는 HashiCorp 구성 언어를 사용하여 리소스를 정의합니다. 자세한 내용은 테라폼 문서를 참조하세요.
Terraform을 사용하여 API 키 만들기
테라폼을 사용하여 액세스 그룹을 만들려면 다음 단계를 따르세요.
-
main.tf파일에 인수를 생성합니다. 다음 예제에서는ibm_iam_api_key리소스를 사용하여 액세스 그룹을 생성합니다. 여기서name은 API 키를 식별하는 고유 이름입니다.resource "ibm_iam_api_key" "iam_api_key" { name = "test1234" }description속성은 API 키를 생성하는 동안 설명을 제공한 경우에만 사용할 수 있습니다. 자세한 내용은 Terraform Identity and Access Management(IAM) 페이지의 인수 참조 세부 정보를 참조하세요. -
구성 파일 빌드를 완료한 후 Terraform CLI를 초기화합니다. 자세한 내용은 작업 디렉터리 초기화를 참조하세요.
terraform init -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
-
콘솔에서 API 키 업데이트하기
API 키의 설명 또는 이름을 변경하려는 경우, UI 또는 CLI에서 다음 단계를 완료하십시오.
API 키를 편집하려면 다음 단계를 완료하십시오.
- IBM Cloud 콘솔에서 관리 > 액세스(IAM) > API 키로 이동하십시오.
- 업데이트할 API 키의 행을 식별하고 조치 아이콘
> 편집을 클릭하십시오.
- API 키에 대한 정보를 업데이트하십시오.
- 적용을 클릭하십시오.
자체 키가 아니지만 관리할 수 있는 액세스 권한이 있는 API 키를 편집하려면, API 키 페이지로 이동하십시오. 그런 다음 보기 메뉴에서 모든 사용자 IBM Cloud API 키 옵션을 선택하여 API 키를 찾으십시오.
CLI를 사용하여 API 키 업데이트하기
CLI를 사용하여 API 키를 편집하려면 다음 명령을 입력하십시오.
ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION]을 입력하여 키의 이전 이름, 새 이름 및 새 설명을 지정합니다. 자세한 내용은 다음 예시를 참조하세요:
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"
API를 사용하여 API 키 업데이트
API를 사용하여 API 키를 편집하려면 다음 예시와 같이 IAM Identity Service API를 호출합니다:
curl -X PUT 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'If-Match: <value of etag header from GET request>' -H 'Content-Type: application/json' -d '{
"name": "My-apikey",
"description": "my personal key"
}'
UpdateApiKeyOptions updateApiKeyOptions = new UpdateApiKeyOptions.Builder()
.id(apikeyId)
.ifMatch(apikeyEtag)
.description("This is an updated description")
.build();
Response<ApiKey> response = service.updateApiKey(updateApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
System.out.println(apiKey.toString());
const params = {
id: apikeyId,
ifMatch: apikeyEtag,
description: 'This is an updated description',
};
iamIdentityService.updateApiKey(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
api_key = iam_identity_service.update_api_key(
id=apikey_id,
if_match=apikey_etag,
description='This is an updated description'
).get_result()
print(json.dumps(api_key, indent=2))
updateAPIKeyOptions := iamIdentityService.NewUpdateAPIKeyOptions(apikeyID, apikeyEtag)
updateAPIKeyOptions.SetDescription("This is an updated description")
apiKey, response, err := iamIdentityService.UpdateAPIKey(updateAPIKeyOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", " ")
fmt.Println(string(b))
Terraform을 사용하여 API 키 업데이트하기
다음 단계에 따라 테라폼을 사용하여 API 키를 업데이트하세요:
-
Terraform 구성
main.tf파일에서iam_api_key을 생성하는 데 사용한 Terraform 코드를 찾습니다. -
다음 예제는
ibm_iam_api_key리소스를 사용하여 API 키를 업데이트하는 것으로, 여기서name은 API 키를 식별하는 고유 이름입니다.resource "ibm_iam_api_key" "iam_api_key" { name = "test1234" description = "API key for users" }description속성은 API 키를 생성하는 동안 설명을 제공한 경우에만 사용할 수 있습니다. 자세한 내용은 Terraform Identity and Access Management(IAM) 페이지의 인수 참조 세부 정보를 참조하세요. -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
-
자세한 정보는 Terraform 문서를 참조하십시오.
콘솔에서 API 키 잠금 및 잠금 해제하기
사용자 ID를 나타내는 플랫폼 API 키에 대해 API 키를 잠그는 방법을 사용하여 삭제되지 않도록 방지할 수 있습니다. 잠긴 API 키에는 잠김 아이콘 잠김 표시됩니다.
- IBM Cloud 콘솔에서 관리 > 액세스(IAM) > API 키로 이동하십시오.
- 잠글 API 키의 행을 식별하고 조치 아이콘
> 잠금을 클릭하십시오.
계정에서 API 키를 업데이트하거나 제거하기 위해 언제든 API 키를 잠금 해제할 수 있습니다. 잠금 해제할 테이블에서 API키를 선택하고 조치 아이콘 > 잠금 해제를 클릭하십시오.
CLI를 사용하여 API 키 잠금 및 잠금 해제
사용자 ID를 나타내는 플랫폼 API 키에 대해 API 키를 잠그는 방법을 사용하여 삭제되지 않도록 방지할 수 있습니다. API 키를 잠그려면 다음 명령을 사용하십시오.
ibmcloud iam api-key-lock (NAME|UUID) [-f, --force]
전제조건: 엔드포인트, 로그인
명령 옵션:
- NAME(필수)
- 잠글 API 키의 이름(UUID만 사용 가능)입니다.
- UUID(필수)
- 잠글 API 키의 UUID, NAME과 함께 사용해야 합니다.
- -f, --force
- 확인 없이 강제로 잠급니다.
예제:
API 키 잠금 test-api-key
ibmcloud iam api-key-lock test-api-key
API 키를 잠금 해제하려면 다음 명령을 실행하십시오.
ibmcloud iam api-key-unlock (NAME|UUID) [-f, --force]
전제조건: 엔드포인트, 로그인
명령 옵션:
- NAME(필수)
- 잠금 해제할 API 키의 이름(UUID와 배타적)
- UUID(필수)
- 잠금 해제할 API 키의 UUID(NAME과 배타적)
- -f, --force
- 확인 없이 강제로 잠금 해제합니다.
예제:
API 키 잠금 해제 test-api-key
ibmcloud iam api-key-unlock test-api-key
API를 사용하여 API 키 잠금 및 잠금 해제
사용자 ID를 나타내는 플랫폼 API 키에 대해 API 키를 잠그는 방법을 사용하여 삭제되지 않도록 방지할 수 있습니다.
API를 사용하여 API 키 잠그기
API를 사용하여 API 키를 잠그려면 다음 예시와 같이 IAM Identity Service API를 호출합니다:
curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
LockApiKeyOptions lockApiKeyOptions = new LockApiKeyOptions.Builder()
.id(apikeyId)
.build();
service.lockApiKey(lockApiKeyOptions).execute();
const params = {
id: apikeyId,
};
iamIdentityService.lockApiKey(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
lock_api_key(self,
id: str,
**kwargs
) -> DetailedResponse
response = iam_identity_service.lock_api_key(id=apikey_id)
print(response)
lockAPIKeyOptions := iamIdentityService.NewLockAPIKeyOptions(apikeyID)
response, err := iamIdentityService.LockAPIKey(lockAPIKeyOptions)
if err != nil {
panic(err)
}
API 키 잠금 해제
API를 사용하여 API 키를 잠금 해제하려면 다음 예시와 같이 IAM Identity Service API를 호출합니다:
curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockApiKeyOptions unlockApiKeyOptions = new UnlockApiKeyOptions.Builder()
.id(apikeyId)
.build();
service.unlockApiKey(unlockApiKeyOptions).execute();
const params = {
id: apikeyId,
};
iamIdentityService.unlockApiKey(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
response = iam_identity_service.unlock_api_key(id=apikey_id)
print(response)
unlockAPIKeyOptions := iamIdentityService.NewUnlockAPIKeyOptions(apikeyID)
response, err := iamIdentityService.UnlockAPIKey(unlockAPIKeyOptions)
if err != nil {
panic(err)
}
테라폼을 사용하여 API 키 잠금 및 잠금 해제하기
사용자 ID를 나타내는 플랫폼 API 키에 대해 API 키를 잠그는 방법을 사용하여 삭제되지 않도록 방지할 수 있습니다.
Terraform을 사용하여 API 키 잠그기
다음 단계에 따라 Terraform을 사용하여 API 키를 잠그세요:
-
Terraform 구성
main.tf파일에서iam_api_key을 생성하는 데 사용한 Terraform 코드를 찾습니다. -
다음 예제는
ibm_iam_api_key리소스를 사용하여 API 키를 업데이트하는 것으로, 여기서entity_lock은 추가 쓰기 작업을 위해 API 키가 잠겨 있는지 여부를 나타냅니다. 기본값은false입니다.resource "ibm_iam_api_key" "iam_api_key" { entity_lock = "true" } -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
-
자세한 정보는 Terraform 문서를 참조하십시오.
API 키 삭제
키 회전 전략을 사용하는 경우, 이전 키를 삭제하고 새 키로 바꾸려고 할 수 있습니다.
API 키를 삭제하려면 다음 단계를 완료하십시오.
- IBM Cloud 콘솔에서 관리 > 액세스(IAM) > API 키로 이동하십시오.
- 삭제하려는 API 키의 행을 식별하고 작업 아이콘
> 삭제를 클릭합니다.
- 그런 다음 삭제를 클릭하여 삭제를 확인하십시오.
자체 키가 아니지만 관리할 수 있는 액세스 권한이 있는 API 키를 삭제하려면, API 키 페이지로 이동하십시오. 그런 다음 보기 메뉴에서 모든 사용자 IBM Cloud API 키 옵션을 선택하여 API 키를 찾으십시오.
CLI를 사용하여 API 키 삭제
CLI를 사용하여 API 키를 삭제하려면 다음을 수행하십시오.
ibmcloud iam api-key-delete NAME 을 입력하여 삭제할 키의 이름을 지정합니다.
API를 사용하여 API 키 삭제
API를 사용하여 API 키를 삭제하려면 다음 예시와 같이 IAM Identity Service API를 호출합니다:
curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
DeleteApiKeyOptions deleteApiKeyOptions = new DeleteApiKeyOptions.Builder()
.id(apikeyId)
.build();
service.deleteApiKey(deleteApiKeyOptions).execute();
const params = {
id: apikeyId,
};
iamIdentityService.deleteApiKey(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err);
});
delete_api_key(self,
id: str,
**kwargs
) -> DetailedResponse
response = iam_identity_service.delete_api_key(id=apikey_id)
print(response)
deleteAPIKeyOptions := iamIdentityService.NewDeleteAPIKeyOptions(apikeyID)
response, err := iamIdentityService.DeleteAPIKey(deleteAPIKeyOptions)
if err != nil {
panic(err)
}
콘솔을 사용하여 유출된 사용자 API 키 검토하기
유출된 사용자 API 키가 감지되면 콘솔을 사용하여 이를 검토할 수 있습니다. 다음 단계를 완료하십시오.
- IBM Cloud 콘솔에 로그인하십시오.
- 유출된 API 키가 포함된 계정을 선택합니다.
- 관리 > 액세스 > API 키로 이동하여 유출된 API 키를 검토합니다.
CLI를 사용하여 유출된 사용자 API 키 검토하기
유출된 사용자 API 키가 감지되면 CLI를 사용하여 이를 검토할 수 있습니다. 다음 단계를 완료하십시오.
-
IBM Cloud에 로그인하십시오.
-
유출된 API 키가 포함된 계정을 선택합니다.
-
다음 명령을 실행하십시오.
ibmcloud iam api-key <API_key_ID>