IBM Cloud Logsにデータを送信するアクセス権IBM Cloud Activity Tracker Event Routingに付与する S2Sを作成する

IBM Cloud® Identity and Access Management (IAM) を使用して、 IBM Cloud Activity Tracker Event Routing IBM Cloud Logsへのアクセス権を付与する認証を作成します。

IBM Cloud Logsが配置されている IBM Cloudで、サービス間 S2S 認証を設定する必要があります。

開始前に

  • サービス間のアクセス権付与の管理 についてお読みください。

  • サービス間の認可を管理するには、対象サービスへのアクセス権が必要です。 詳細は、 権限管理の権限 を参照してください。

  • IBM Cloud Activity Tracker Event Routingに対して定義する権限には、 IBM Cloud Logsに対して Administrator のロールが必要です。

  • IBM Cloud Logsが配置されているアカウントで権限を定義していることを確認してください。

  • 別のアカウントのサービスと現在のアカウントのターゲット・サービスの間に許可を作成する場合は、ターゲット・リソースへのアクセス権限のみが必要です。 ソース・アカウントには、アカウントIDだけが必要です。

サービス・アクセス役割

Sender にロールを付与して、データを IBM Cloud Logsに送信する権限を付与する必要があります。

コンソールから認証を作成する

以下のステップを実行します。

  1. IBM Cloud コンソールで、「管理」 > **「アクセス (IAM)」をクリックし、「許可」**を選択します。

  2. 「作成」 をクリックします。

  3. ソース・アカウントを選択します。

    IBM Cloud Activity Tracker Event Routing と IBM Cloud Logsが、認証を定義しているのと同じアカウントにある場合は 、「このアカウント」 を選択します。

    IBM Cloud Activity Tracker Event Routing と IBM Cloud Logsが異なるアカウントにある場合は 、「その他のアカウント」 を選択します。 次に、ソースアカウントのID、つまり、 IBM Cloud Activity Tracker Event Routing IBM Cloud Logsにデータを送信するように設定されるアカウントを入力します。

  4. Activity Tracker Event Routing をソースサービスとして選択します。 次に、アクセス範囲を 「すべてのリソース」 に設定します。

  5. 対象サービスとして 「Cloud Logs」 を選択します。 次に、アクセス範囲を設定します。

    アカウント内のすべてのインスタンスとリソースへのアクセスを許可するには 、「すべてのリソース」 を選択します。

    特定のインスタンスへのアクセスを許可するには、 選択した属性に基づいてリソース > サービス インスタンスを構成して、単一のインスタンスを選択します。

  6. 「サービスアクセス」セクション、「送信者」 を選択して、 IBM Cloud Activity Tracker Event Routingにバケットへのアクセス権を割り当てます。

  7. 「許可」 をクリックします。

CLI を使用した許可の作成

IBM Cloud Activity Tracker Event Routingの認証を作成するには、次のコマンドを実行します。

ibmcloud iam authorization-policy-create atracker logs "Sender" [--target-service-instance-id TARGET_SERVICE_INSTANCE_ID]

以下のパラメータを設定して、単一のバケットへのアクセスを許可することができます

  • TARGET_SERVICE_INSTANCE_ID: IBM Cloud LogsのID。

このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。

CLIを使用した認証クロスアカウントの作成

IBM Cloud Activity Tracker Event Routingと対象サービスが異なるアカウントにある場合、対象サービスが配置されているアカウントで認証を作成するには、次のコマンドを実行します

ibmcloud iam authorization-policy-create atracker cloud-object-storage "Object Writer" [--target-service-instance-id TARGET_SERVICE_INSTANCE_ID] [--source-service-account SOURCE_SERVICE_ACCOUNT_GUID ]

以下のパラメータを設定して、単一のバケットへのアクセスを許可することができます

  • TARGET_SERVICE_INSTANCE_NAME: IBM Cloud Logsの CRN。
  • SOURCE_SERVICE_ACCOUNT_GUID: ターゲットサービスにデータを送信するように設定されているアカウントのGUID IBM Cloud Activity Tracker Event Routing に設定します。 このオプションは、ソース・サービスが別のアカウントのものである場合にのみ使用してください。

このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。

Terraform を使用した許可の作成

Terraformを使用して認証を作成する前に、以下の作業が完了していることを確認してください

  • Terraform CLIをインストールし、Terraform IBM Cloudを設定します。 詳細は IBM Cloudの Terraform入門 チュートリアルをご覧ください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、 HashiCorp を使用してリソースを定義します。 詳しくは Terraformのドキュメントを参照。

以下の手順で、Terraformを使って認可を作成する:

  1. main.tf ファイルで ibm_iam_authorization_policy リソース引数を使用して、サービス間の認証ポリシーを作成します。

    次の例では、2つのサービス間の認証を作成します

    resource "ibm_iam_authorization_policy" "policy" {
     source_service_name = "atracker"
     target_service_name = "logs"
     roles               = ["Sender"]
     description         = "Authorization Policy"
     transaction_id     = "terraformAuthorizationPolicy"
    }
    

    次の例では、2つの特定のサービスインスタンス間の認証を作成します

    resource "ibm_iam_authorization_policy" "policy" {
      source_service_name         = "atracker"
      source_resource_instance_id = ibm_resource_instance.instance1.guid
      target_service_name         = "logs"
      target_resource_instance_id = ibm_resource_instance.instance2.guid
      roles                       = ["Sender"]
    }
    

    ibm_iam_authorization_policy リソースには、ソースサービス、ターゲットサービス、およびロールが必要です。 ソースサービスはターゲットサービスへのアクセス権限が与えられ、役割はアクセスが許可する権限のレベルです。 オプションとして、認証に関する説明とトランザクションIDを追加することができます。

  2. 構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳細は 、「作業ディレクトリの初期化 」を参照してください。

    terraform init
    
  3. main.tf ファイルからリソースを準備します。 詳細については 、「Terraformによるインフラストラクチャのプロビジョニング 」を参照してください。

    1. terraform plan を実行して、Terraform実行計画を生成し、提案されたアクションをプレビューします。

      terraform plan
      
    2. terraform apply を実行して、計画で定義されたリソースを作成します。

      terraform apply
      

API を使用した許可の作成

ソース・サービスからターゲット・サービスへのアクセスを許可するには、IAM Policy Management API を使用します。 cloud-object-storage バケットをターゲットとして指定した type=authorization を使用してポリシーメソッドを作成するAPIの例は、以下を参照してください。

許可ポリシーの作成でサポートされる属性は、それぞれのサービスが何をサポートしているかによって異なります。

curl --request POST \
  --url https://iam.cloud.ibm.com/v1/policies \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<account-id>"
                },
                {
                    "name": "serviceName",
                    "value": "atracker"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Sender"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "serviceName",
                    "value": "logs"
                },
                {
                    "name": "serviceInstance",
                    "value": "$CLOUD_LOGS_INSTANCE_ID",
                    "operator": "stringEquals"
                }
            ]
        }
    ]
}'