へのアクセスを許可する。 IBM Cloud Logs

アカウント内のユーザーおよびアプリケーションの IBM Cloud 構成リソースへのアクセスは、 IBM Cloud® Identity and Access Management (IAM) によって制御されます。 アカウントで IBM Cloud Logs サービスにアクセスするすべてのユーザーまたはアプリケーションには、IAM ロールを持つアクセス・ポリシーを割り当てる必要があります。 IBM Cloud Logs にアクセス権を割り当てる最適な方法を決定するために、以下の役割、アクションなどを確認してください。

以下のいずれかの方法を使用して、 IBM Cloud Logs へのアクセス権限を割り当てることができます。

  • ユーザーごとのアクセス・ポリシー

  • アクセス・グループ

    アクセス・グループは、アクセス権限をグループに 1 回割り当てることによってアクセス管理を簡素化するために使用されます。その後、ユーザーのアクセス権限を制御するために、必要に応じてグループにユーザーを追加したり、グループからユーザーを削除したりすることができます。

    アクセス・グループを作成して、ユーザー、サービス ID、およびトラステッド・プロファイルのセットを単一のエンティティーに編成し、アクセス権限の割り当てを容易にすることができます。 個々のユーザーまたはサービス ID に同じアクセス権限を複数回割り当てる代わりに、単一のポリシーをグループに割り当てることができます。 詳細については、アクセス・グループのセットアップを参照してください。

    一連のユーザーとサービスIDを1つのエンティティに整理し、IAMパーミッションの管理を容易にするには、アクセスグループを使用する。 個々のユーザーまたはサービス ID ごとに同じアクセス権限を複数回割り当てるのではなく、単一のポリシーをグループに割り当てることができます。

  • トラステッド・プロファイル

    信頼できるプロファイルを使用して、アカウント内のリソースに対するアクセス権限をさまざまな IBM Cloud® ID に付与できます。 企業ディレクトリーからの SAML 属性に基づく条件を使用して、フェデレーテッド・ユーザーにアカウントへのアクセス権限を自動的に付与します。 あるいは、信頼されたプロファイルを使用して、コンピュート・リソースで実行されるアプリケーションに対してきめ細かな認可を設定する。 この方法では、計算リソースのサービス ID や API キーを作成する必要はありません。 また、別のアカウントの IBM Cloud サービスまたはサービス ID との信頼を確立して、アカウント間のアクセス権限を付与することもできます。 詳しくは、トラステッド・プロファイルの作成を参照してください。

ポリシーと権限を作成するIAM権限を持っている場合、対象サービスのユーザーとして持っているレベルのアクセスのみを付与することができます。 例えば、対象サービスのビューアアクセスを持っている場合、ビューアロールのみを権限に割り当てることができます。 Administratorなどの上位の権限を割り当てようとすると、権限が付与されているように見えるかもしれませんが、対象のサービスに対して持っている最上位の権限(ビューア)しか割り当てられません。

コンソールで IBM Cloud Logs へのアクセスを割り当てる

コンソールで IBM Cloud Logs、アクセス権を割り当てる一般的な方法は2つある:

  • アクセス・グループ。 コンソールの 「管理 > アクセス(IAM) > アクセスグループ 」ページから、アクセスグループとそのアクセスを管理できます。 詳しくは、コンソールでのグループへのアクセス権限の割り当てを参照してください。

  • ユーザー別のアクセス・ポリシー。 コンソールで**「管理」>「アクセス (IAM)」>「ユーザー」**ページから、ユーザー別のアクセス・ポリシーを管理できます。 IAM アクセス権限を割り当てる手順については、リソースに対するアクセス権限の管理を参照してください。

CLIで IBM Cloud Logs

アクセス権限の割り当て、割り当て解除、表示を行うステップバイステップの手順については、CLI を使用したリソースに対するアクセス権限の割り当てを参照してください。 次の例は、 IBM Cloud Logs に対して Viewer ロールを割り当てるコマンドを示している:

サービス名には logs を使用します。 また、1語以上の役名にはクォーテーションを使用する。

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

API を使用して IBM Cloud Logs にアクセス権を割り当てる

アクセス権限の割り当て、削除、および確認のステップバイステップの手順については、API を使用したリソースへのアクセス権限の割り当てまたはポリシー API 資料の作成を参照してください。 API でアクセス権限を割り当てるには、以下の表に記載している役割のクラウド・リソース名 (CRN) を使用します。

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 を使用します。CRN には、役割の ID 値の表を参照して適切な値を使用してください。

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を参照してください。