IBM Cloud Logs への IBM® Event Streams for IBM Cloud® へのアクセスを許可する S2S 認証の作成
IBM Cloud® Identity and Access Management (IAM) を使用して、IBM Cloud Logs サービスへのアクセスを IBM® Event Streams for IBM Cloud® に許可する権限を作成します。
開始前に
-
サービス間のアクセスを許可するための権限の管理 についてお読みください。
-
サービス間の認可を管理するには、対象サービスへのアクセス権が必要です。 詳細については、権限を管理する を参照してください。
-
対象サービスは、常に認証が作成されたアカウントに配置される。
-
IBM Cloud Logsサービスに対して定義する認証では、IBM® Event Streams for IBM Cloud®ターゲットに対して
Administratorロールを持つ必要があります。
サービス・アクセス役割
Writer に IBM® Event Streams for IBM Cloud®とのソース統合を処理する役割を付与する必要があります。
コンソールから認証を作成する
以下のステップを実行します。
-
IBM Cloud コンソールで、「管理」 > **「アクセス (IAM)」をクリックし、「許可」**を選択します。
-
「作成」 をクリックします。
-
以下のいずれかの方法で、ソース・アカウントを選択する。
-
ターゲット・サービスへのアクセスを必要とするソース・サービスがこのアカウント内にある場合は、**「このアカウント」**を選択します。
-
ターゲット・サービスへのアクセスを必要とするソース・サービスが別のアカウント内にある場合は、**「他のアカウント」**を選択します。 次に、ソース・アカウントのアカウント ID を入力します。
-
-
ソースサービスとして
Cloud Logsを選択します。 次に、以下のいずれかの方法で、アクセスのスコープを設定する。-
アカウント内のすべてのインスタンスに対してアクセスを許可するには、すべてのリソースを選択します。
-
ソース・サービス・インスタンスを選択して、1つのIBM Cloud Logsインスタンスへのアクセスを許可します。
-
-
Event Streams をターゲット・サービスとして選択します。 次に、以下のいずれかの方法で、アクセスのスコープを設定する。
-
アカウント内のすべてのIBM® Event Streams for IBM Cloud®インスタンスとリソースへのアクセスを許可するには、すべてのリソースを選択します。
-
特定のインスタンスへのアクセスを許可するには、Resources based on selected attributes > サービスインスタンスを設定して、単一のインスタンスを選択します。
-
-
Service Access セクションで、ターゲット・サービスにアクセスするソース・サービスにアクセスを割り当てるロールを選択します。
IBM® Event Streams for IBM Cloud®へのストリーミングを許可するには、ライターを選択します。
ポリシーと権限を作成するIAM権限を持っている場合、対象サービスのユーザーとして持っているレベルのアクセスのみを付与することができます。 例えば、対象サービスのビューアアクセスを持っている場合、ビューアロールのみを権限に割り当てることができます。 Administratorなどの上位の権限を割り当てようとすると、権限が付与されているように見えるかもしれませんが、対象のサービスに対して持っている最上位の権限(ビューア)しか割り当てられません。
-
「許可」 をクリックします。
別のアカウントのサービスと現在のアカウントのターゲット・サービスの間に許可を作成する場合は、ターゲット・リソースへのアクセス権限のみが必要です。 ソース・アカウントの場合は、アカウント番号のみが必要です。
CLI を使用した許可の作成
以下のコマンドを実行して、IBM Cloud Logsサービスの認証を作成します。
ibmcloud iam authorization-policy-create logs messagehub "Writer" [--source-service-instance-name SOURCE_SERVICE_INSTANCE_NAME | --source-service-instance-id SOURCE_SERVICE_INSTANCE_ID] [--target-service-instance-name TARGET_SERVICE_INSTANCE_NAME | --target-service-instance-id TARGET_SERVICE_INSTANCE_ID]
このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。
Terraform を使用した許可の作成
Terraformを使って認可を作成する前に、以下のことが完了していることを確認してください:
- Terraform CLIをインストールし、IBM Cloud Provider plug-in for Terraformを設定します。 詳しくは Getting started with Terraform on IBM Cloud のチュートリアルを参照してください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、HashiCorp構成言語を使ってリソースを定義します。 詳しくは Terraformのドキュメントを参照。
以下の手順で、Terraformを使って認可を作成する:
-
main.tfファイルのibm_iam_authorization_policyリソース引数を使用して、サービス間の認可ポリシーを作成します。以下の例では、2つのサービス間で認可を作成している:
resource "ibm_iam_authorization_policy" "policy" { source_service_name = "logs" target_service_name = "messagehub" roles = ["Writer"] description = "Authorization Policy" transaction_id = "terraformAuthorizationPolicy" }以下の例では、2つの特定のサービス・インスタンス間で認可を作成している:
resource "ibm_iam_authorization_policy" "policy" { source_service_name = "logs" source_resource_instance_id = ibm_resource_instance.instance1.guid target_service_name = "messagehub" target_resource_instance_id = ibm_resource_instance.instance2.guid roles = ["Writer"] }ibm_iam_authorization_policyリソースは、ソースサービス、ターゲットサービス、ロールを必要とします。 ソース・サービスはターゲット・サービスへのアクセスを許可され、ロールはアクセスが許可する権限レベルである。 オプションとして、認可の説明とトランザクションIDを追加できます。-
IBM® Event Streams for IBM Cloud® のターゲット・インスタンスをスコープするために、
target_resource_instance_idを指定することができます。 -
その他の例については、Terraform documentation for authorization resourcesを参照してください。
-
-
設定ファイルのビルドが終わったら、Terraform CLIを初期化します。 詳しくは、作業ディレクトリの初期化を参照してください。
terraform init -
main.tfファイルからリソースを提供する。 詳しくは、Terraformでインフラをプロビジョニングするを参照してください。-
terraform planを実行してTerraformの実行計画を生成し、提案されたアクションをプレビューします。terraform plan -
terraform applyを実行して、プランで定義されたリソースを作成します。terraform apply
-
API を使用した許可の作成
ソース・サービスからターゲット・サービスへのアクセスを許可するには、IAM Policy Management API を使用します。 event-notifications のターゲットに指定された 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": "logs"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:event-notifications::::serviceRole:Reader"
}
],
"resources": [
{
"attributes": [
{
"name": "serviceName",
"value": "messagehub"
}
]
}
]
}'