S2Sを作成し、 IBM Cloud Logs へのアクセスを IBM Cloud Event Notificationsに許可する
IBM Cloud® Identity and Access Management (IAM)を使用して、 IBM Cloud Logs に IBM Cloud Event Notifications サービスへのアクセスを許可する認可を作成する。
開始前に
-
「 サービス間のアクセス権限を付与するための許可の管理」を参照してください。
-
IBM Cloud Event Notifications インスタンスがプロビジョニングされている IBM Cloud アカウント、サービス間の権限を管理するために IAM にアクセスする必要があります。 詳しくは、 許可を管理するための許可 を参照してください。
-
IBM Cloud Logs サービスに定義する認証には、 IBM Cloud Event Notifications インスタンスに
Administratorロールが必要です。
サービス・アクセス役割
ソースがターゲットとの対話に使用できる以下のロールのいずれかを選択できます。 選択したターゲットのユーザーとして保持しているアクセス・レベルのみを付与できます。
Event Source Manager: IBM Cloud Event Notifications サービスとのソース統合を処理するには、Event Source Manager役割を付与する必要があります。Reader: サービス固有のリソースの表示など、サービス内で読み取り専用アクションを実行するには、Reader役割を付与する必要があります。Viewer: IBM Cloud Event Notifications サービスインスタンスを一覧表示するには、Viewerロールを付与する必要があります。
コンソールから認証を作成する
IBM Cloud Event Notifications インスタンスがプロビジョニングされている IBM Cloud アカウント、サービス間の認証を作成する必要があります。
認可を構成する場合、 IBM Cloud Event Notifications インスタンスが利用可能なアカウント、認可を作成するためのアクセス権と権限が必要です。 IBM Cloud Logs インスタンスが利用可能なアカウント、アカウントアカウントサービス間認証を構成するためにアカウント番号のみが必要です。
以下のステップを実行します。
-
IBM Cloud コンソールで、「管理」 > **「アクセス (IAM)」をクリックし、「許可」**を選択します。
-
「作成」 をクリックします。
-
ソース・アカウントを選択します。
IBM Cloud Event Notifications インスタンスと IBM Cloud Logs インスタンスが同じアカウントある場合は、 このアカウント を選択します。
IBM Cloud Event Notifications インスタンスと IBM Cloud Logs インスタンスが異なるアカウントある場合は、 その他のアカウント を選択します。 次に、 IBM Cloud Logs インスタンスが利用可能なアカウント ID を入力します。
-
ソース・サービスとして
Cloud Logsを選択します。 次に、アクセスの有効範囲を設定します。アカウント内のすべてのインスタンスに対するアクセス権限を付与するには、 「すべてのリソース」 を選択します。
1 つの IBM Cloud Logs インスタンスへのアクセス権限を付与するには、 「ソース・サービス・インスタンス」 を選択します。
-
ターゲット・サービスとして 「イベント通知」 を選択します。 次に、アクセスの有効範囲を設定します。
アカウント内のすべての IBM Cloud Event Notifications インスタンスおよびリソースへのアクセス権限を付与するには、 「すべてのリソース」 を選択します。
特定のインスタンスへのアクセス権限を付与するには、 「選択した属性に基づくリソース」 > 「サービス・インスタンス」 を構成して、単一インスタンスを選択します。
-
Service Access セクションで、ターゲット・サービスにアクセスするソース・サービスにアクセスを割り当てるロールを選択します。
サービス固有のリソースを閲覧するなど、サービス内で読み取り専用のアクションを実行する場合は、 「リーダー 」を選択します。
Viewerを選択すると、 IBM Cloud Event Notifications サービスインスタンスが一覧表示されます。
「イベント・ソース・マネージャー」 を選択して、イベント通知サービスとのソース統合を処理します。
-
「許可」 をクリックします。
CLI を使用した許可の作成
以下のコマンドを実行して、 IBM Cloud Logs サービスの許可を作成します。
ibmcloud iam authorization-policy-create logs event-notifications "Reader" [--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 をインストールし、Terraform 用の IBM Cloud Provider プラグインを構成します。 詳しくは、 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 = "event-notifications" roles = ["Reader"] 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 source_service_account = target_service_name = "event-notifications" target_resource_instance_id = ibm_resource_instance.instance2.guid roles = ["Reader"] }ibm_iam_authorization_policyリソースには、ソース・サービス、ターゲット・サービス、および役割が必要です。 ソース・サービスにはターゲット・サービスへのアクセス権限が付与され、役割はアクセスが許可するアクセス権のレベルです。 オプションで、許可およびトランザクション ID の説明を追加できます。-
IBM Cloud Event Notifications のターゲット・インスタンスをスコープするために、
target_resource_instance_idを指定することができます。 -
その他の例については、 許可リソースに関する Terraform 資料を参照してください。
-
-
構成ファイルの作成が完了したら、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": "event-notifications"
}
]
}
]
}'