다음에 대한 액세스 권한 부여 IBM Cloud Logs

계정의 사용자 및 애플리케이션에 대한 IBM Cloud 구성 리소스에 대한 액세스는 IBM Cloud® Identity and Access Management (IAM) 에 의해 제어됩니다. 계정에서 IBM Cloud Logs 서비스에 액세스하는 모든 사용자 또는 애플리케이션에는 IAM 역할이 있는 액세스 정책이 할당되어야 합니다. 다음 역할, 작업 등을 검토하여 IBM Cloud Logs 에 대한 액세스 권한을 할당하는 가장 좋은 방법을 결정하는 데 도움이 됩니다.

다음 방법 중 하나를 사용하여 IBM Cloud Logs 에 대한 액세스 권한을 지정할 수 있습니다.

  • 사용자당 액세스 정책

  • 액세스 그룹

    액세스 그룹은 그룹에 대한 액세스 권한을 한 번 지정하여 액세스 관리를 간소화하는 데 사용되며, 필요한 대로 그룹에서 사용자를 추가하거나 제거하여 액세스 권한을 제어할 수 있습니다.

    액세스 그룹은 사용자, 서비스 ID 및 신뢰할 수 있는 프로파일 세트를, 액세스 권한을 쉽게 지정할 수 있도록 하는 단일 엔티티로 구성하기 위해 작성될 수 있습니다. 사용자는 개별 사용자 또는 서비스 ID에 대해 동일한 액세스 권한을 여러 번 지정하는 대신 그룹에 하나의 정책을 지정할 수 있습니다. 자세한 정보는 액세스 그룹 설정을 참조하십시오.

    사용자 및 서비스 ID 집합을 단일 엔터티로 구성하여 IAM 권한을 쉽게 관리하려면 액세스 그룹을 사용하세요. 개별 사용자 또는 서비스 ID마다 동일한 액세스 권한을 여러 번 지정하는 대신 그룹에 단일 정책을 지정할 수 있습니다.

  • 신뢰할 수 있는 프로파일

    신뢰할 수 있는 프로파일을 사용하여 다른 IBM Cloud® ID에 계정의 리소스에 대한 액세스 권한을 부여할 수 있습니다. 회사 디렉토리의 SAML 속성에 기반한 조건으로 연합 사용자에게 계정에 대한 액세스 권한을 자동으로 부여합니다. 또는 신뢰할 수 있는 프로필을 사용하여 컴퓨팅 리소스에서 실행 중인 애플리케이션에 대한 세분화된 권한을 설정할 수 있습니다. 이렇게 하면 계산 리소스의 서비스 ID 또는 API 키를 작성할 필요가 없습니다. IBM Cloud 서비스 또는 다른 계정의 서비스 ID로 신뢰를 설정하여 교차 계정 액세스 권한을 부여할 수도 있습니다. 자세한 정보는 신뢰 프로파일 작성을 참조하십시오.

정책 및 권한 부여를 만들 수 있는 IAM 권한이 있는 경우 대상 서비스의 사용자로서 보유한 액세스 수준만 부여할 수 있습니다. 예를 들어 대상 서비스에 대한 뷰어 액세스 권한이 있는 경우 권한 부여를 위해 뷰어 역할만 할당할 수 있습니다. 관리자 등의 상위 권한을 할당하려고 하면 권한이 부여된 것처럼 보일 수 있지만 대상 서비스에 대한 가장 높은 수준의 권한, 즉 보기 권한만 할당됩니다.

콘솔에서 IBM Cloud Logs 에 액세스 권한 할당하기

콘솔에서 IBM Cloud Logs 에 대한 액세스 권한을 할당하는 일반적인 방법은 두 가지가 있습니다:

  • 액세스 그룹. 콘솔의 관리 > 액세스(IAM) > 액세스 그룹 페이지에서 액세스 그룹 및 해당 액세스 권한을 관리할 수 있습니다. 자세한 정보는 콘솔에서 그룹에 대한 액세스 지정을 참조하십시오.

  • 사용자별 액세스 정책. 콘솔의 관리 > 액세스(IAM) > 사용자 페이지에서 사용자별 액세스 정책을 관리할 수 있습니다. IAM 액세스를 지정하는 단계에 대한 정보는 리소스에 대한 액세스 관리를 참조하십시오.

CLI에서 IBM Cloud Logs 에 액세스 권한 할당하기

액세스 지정, 제거 및 검토에 대한 단계별 지시사항은 CLI를 사용하여 리소스에 대한 액세스 지정을 참조하십시오. 다음 예는 IBM Cloud Logs 에 Viewer 역할을 할당하는 명령을 보여줍니다:

서비스 이름에 logs을(를) 사용하십시오. 또한 두 단어 이상의 역할 이름에는 따옴표를 사용하세요.

ibmcloud iam user-policy-create name@example.com --service-name logs --roles "Viewer"

API를 사용하여 IBM Cloud Logs 에 액세스 권한 할당하기

액세스 권한 지정, 제거 및 검토에 대한 단계별 지시사항은 API를 사용하여 리소스에 대한 액세스 권한 지정 또는 정책 API 문서 작성을 참조하십시오. 다음 표에 있는 역할 클라우드 리소스 이름(CRN)은 API로 액세스를 지정하는 데 사용됩니다.

API 사용을 위한 역할 ID 값
역할 이름 역할 CRN
뷰어 crn:v1:bluemix:public:logs::::serviceRole:Viewer
운영자 crn:v1:bluemix:public:logs::::serviceRole:Operator
편집자 crn:v1:bluemix:public:logs::::serviceRole:Editor
관리자 crn:v1:bluemix:public:logs::::serviceRole:Administrator

다음은 IBM Cloud Logs 에 Viewer 역할을 할당하는 예제입니다:

서비스 이름으로 logs을(를) 사용하고 역할 ID 값 표를 참조하여 CRN에 올바른 값을 사용하고 있는지 확인하십시오.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Viewer role for IBM Cloud Logs",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:logs::::serviceRole:Viewer"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "logs"
        }
      ]
    }
  ]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
      .name("iam_id")
      .value("IBMid-123453user")
      .build();

PolicySubject policySubjects = new PolicySubject.Builder()
      .addAttributes(subjectAttribute)
      .build();

PolicyRole policyRoles = new PolicyRole.Builder()
      .roleId("crn:v1:bluemix:public:logs::::serviceRole:Viewer")
      .build();

ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value("ACCOUNT_ID")
      .operator("stringEquals")
      .build();

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("logs")
      .operator("stringEquals")
      .build();

PolicyResource policyResources = new PolicyResource.Builder()
      .addAttributes(accountIdResourceAttribute)
      .addAttributes(serviceNameResourceAttribute)
      .build();

CreatePolicyOptions options = new CreatePolicyOptions.Builder()
      .type("access")
      .subjects(Arrays.asList(policySubjects))
      .roles(Arrays.asList(policyRoles))
      .resources(Arrays.asList(policyResources))
      .build();

Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();

System.out.println(policy);
const policySubjects = [
  {
    attributes: [
      {
        name: 'iam_id',
        value: 'IBMid-123453user',
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:logs::::serviceRole:Viewer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'logs',
  operator: 'stringEquals',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute]
  },
];
const params = {
  type: 'access',
  subjects: policySubjects,
  roles: policyRoles,
  resources: policyResources,
};

iamPolicyManagementService.createPolicy(params)
  .then(res => {
    examplePolicyId = res.result.id;
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:logs::::serviceRole:Viewer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='logs')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute])

policy = iam_policy_management_service.create_policy(
  type='access',
  subjects=[policy_subjects],
  roles=[policy_roles],
  resources=[policy_resources]
).get_result()

print(json.dumps(policy, indent=2))
subjectAttribute := &iampolicymanagementv1.SubjectAttribute{
  Name:  core.StringPtr("iam_id"),
  Value: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:logs::::serviceRole:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr("ACCOUNT_ID"),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceName"),
  Value:    core.StringPtr("logs"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute}
}

options := iamPolicyManagementService.NewCreatePolicyOptions(
  "access",
  []iampolicymanagementv1.PolicySubject{*policySubjects},
  []iampolicymanagementv1.PolicyRole{*policyRoles},
  []iampolicymanagementv1.PolicyResource{*policyResources},
)

policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policy, "", "  ")
fmt.Println(string(b))

Terraform을 사용하여 IBM Cloud Logs 에 액세스 권한 할당하기

다음은 IBM Cloud Logs 에 Viewer 역할을 할당하는 예제입니다:

서비스 이름에 logs을(를) 사용하십시오.

resource "ibm_iam_user_policy" "policy" {
  ibm_id = "test@example.com"
  roles  = ["Viewer"]

  resources {
    service = "logs"
  }
}

자세한 정보는 terraform 자원 ibm_iam_user_policy를 참조하십시오.