フェデレートされたユーザーとワークロードのための信頼されたプロファイル
認証情報を管理せずにアクセスを許可する。 コンピュート・リソースにおいて、 SAML 属性またはワークロード ID を持つフェデレートされたユーザーには、信頼されたプロファイルを使用します。
信頼されたプロファイルを使用して、異なる IBM Cloud® ID にアカウント内のリソースへのアクセスを許可することができます。 企業ディレクトリーからの SAML 属性に基づく条件を使用して、フェデレーテッド・ユーザーにアカウントへのアクセス権限を自動的に付与します。 あるいは、信頼されたプロファイルを使用して、コンピュート・リソースで実行されるアプリケーションに対してきめ細かな認可を設定する。 この方法では、計算リソースのサービス ID や API キーを作成する必要はありません。 また、 IBM Cloud サービスまたは別のアカウントサービスIDとの信頼関係を確立して、 アカウントアカウント・アクセスを許可することもできます。
ユーザーは、信頼されたプロフィールを仮定するためにアカウントメンバーである必要はありません。 ユーザーの ID プロバイダ( IdP )が、信頼条件で使用される IdP と一致する場合、ユーザーはプロファイルを使用できる。
最初に信頼済みプロファイルを作成するときに、次のエンティティ・タイプと信頼条件を構築できます:連携ユーザー、コンピュート・リソース、サービスID、または IBM Cloud サービス。 信頼済みプロファイルを作成した後、さらに条件を追加して、同じプロファイルに複数のエンティティ・タイプを 組み合わせることができます。
Activity Tracker を使用して、どの連携ユーザーの計算リソース、サービス ID、および IBM Cloud サービスが信頼されたプロファイルを適用しているかを監視できます。 詳しくは、トラステッド・プロファイルのログイン・セッションのモニターを参照してください。
開始前に
以下のアクセス権限がある場合は、トラステッド・プロファイルを作成できます。
- アカウント所有者
- すべてのアカウント管理サービスに対する管理者役割
- IAM Identity サービスに対する管理者役割。 詳しくは、IAM Identity サービスを参照してください。
コンソールで連携ユーザーとの信頼関係を確立する
特定のリソースにアクセスできるフェデレーテッド・ユーザーを定義するには、以下の手順を実行します。
-
IBM Cloud コンソールで 「管理」 > 「アクセス (IAM)」 をクリックし、「トラステッド・プロファイル」 を選択します。
-
「作成」 をクリックします。
-
名前、Eメール、説明を入力してプロフィールを説明し、[ 続行] をクリックします。
メールには、個人のメールIDを追加することも、配信リストを追加することもできる。
説明として、このトラステッド・プロファイルで実行可能なアクションのリストを記入してください。
-
後で決定する 」を選択すると、詳細を追加する前に信頼できるプロフィールを作成できます。 あるいは、以下のステップを踏んで信頼を確立する:
-
信頼されたエンティティー・タイプとして、リストから**「フェデレーテッド・ユーザー」**を選択します。
-
認証方法として Users federated by IBMid または **Users federated by IBM Cloud App ID を選択し、ステップ 1 で有効にしたデフォルトの ID プロバイダ(**IdP )を入力します。
トラステッド・プロファイルを作成する対象のユーザーが IBM Cloud App ID を使用する場合は、App ID ユーザーとしてトラステッド・プロファイルを作成します。IBMid についても同様です。 この方法により、独自の SAML 属性を使用して、トラステッド・プロファイル条件を構成する方法を理解することができます。 同じ IdP を持つ他のユーザーは、異なる SAML 属性を持つことができます。 独自の属性は、ヒントとしてのみ使用してください。 独自の属性とは異なる属性をクレームで使用するには、それらを手動で入力します。 {: tip}
- 認証方法として、 Users federated by IBMid、 Users federated by IBM Cloud App ID、または **Users federated by IBM Cloud SAML を選択し、ステップ 1 で有効にしたデフォルトの ID プロバイダ(**IdP )を入力します。
-
IdP のデータに基づく条件を追加して、いつ、どのようにフェデレーテッド・ユーザーがプロファイルを適用できるかを定義します。
- **「条件の追加」**をクリックすると、複数の条件を定義できます。 フェデレーテッド・ユーザーは、トラステッド・プロファイルに含まれるすべての条件を満たす必要があります。 条件の作成に使用されるフィールドについて詳しくは、IAM 条件プロパティーを参照してください。
- **「ID プロバイダー (IdP) データの表示」**をクリックすると、IdP で自分の個人データの属性名と値を検索できます。 詳しくは、IdP データを使用したトラステッド・プロファイルの作成を参照してください。
-
ユーザーがプロファイルを適用できる期間のセッション期間を定義します。この期間を過ぎると、ユーザーは再認証を行う必要があります。
-
-
「続行」 をクリックします。
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
-
または、アクセス権を割り当てずに[ 作成 ]をクリックする。
トラステッド・プロファイルの条件を作成するために使用されるフィールドについて詳しくは、IAM 条件プロパティーを参照してください。
コンソールでコンピュート・リソースとの信頼関係を確立する
以下の手順を実行すると、より効果的にコンピュート・リソースへのアクセス権限の付与を制御できます。
IBM Cloud Kubernetes Service では、トラステッド・プロファイルはバージョン 1.21 以降でのみサポートされます。 無料の IBM Cloud Kubernetes Service クラスターでは、これより前のバージョンしか作成されません。 標準プランでは、これより前のバージョンのクラスターを作成する選択肢もあるので、必ずバージョン 1.21 以降を選択するようにしてください。
-
IBM Cloud コンソールで 「管理」 > 「アクセス (IAM)」 をクリックし、「トラステッド・プロファイル」 を選択します。
-
「プロファイルの作成」 をクリックします。
-
名前と説明を入力してどのようなプロファイルであるかを表し、「続行」 をクリックします。
-
後で決定する 」を選択すると、詳細を追加する前に信頼できるプロフィールを作成できます。 あるいは、以下のステップを踏んで信頼を確立する:
-
**「コンピュート・リソース」**を選択し、リストからコンピュート・サービス・タイプを選択します。
-
**「すべてのサービス・リソース」のオプションを選択する場合、「条件の追加」**をクリックして、選択したコンピュート・サービス・タイプのリソースをフィルタリングするための複数の条件を定義できます。 これらは、リソース・グループやロケーションなどの属性に基づく条件であり、既存および将来のすべてのリソースに適用されます。 リソースは、トラステッド・プロファイルに含まれるすべての条件を満たす必要があります。
入力する Kubernetes 名前空間および Kubernetes サービス・アカウント名は、既に存在している必要はありません。 将来これらの名前が付けられる任意の名前空間またはサービス・アカウントが信頼を確立できます。 既存の名前空間をリストするには、クラスターにログインして
kubectl get nsを実行してください。 既存のサービス・アカウントをリストするには、クラスターにログインしてkubectl get sa -n <namespace>を実行します。 両方にdefaultを入力することもできます。 -
Specific resourcesを選択すると、1つまたは複数の既存のコンピュート・リソース・インスタンスとの信頼関係を条件なしで直接確立できます。 例えば、Kubernetes クラスターなどです。
-
-
「続行」 をクリックします。
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
-
または、アクセス権を割り当てずに[ 作成 ]をクリックする。
トラステッド・プロファイルの条件を作成するために使用されるフィールドについて詳しくは、IAM 条件プロパティーを参照してください。
コンソールで IBM Cloud サービスとの信頼関係を確立する
あなたのアカウントまたは別のアカウント IBM Cloud サービスは、あなたのアカウント操作を実行するためにトークンを必要とするかもしれません。
- 例 1
- 別のアカウントあるProjectサービス・インスタンスは、信頼されたプロファイルを仮定して、キーのローテーションを必要とせずに、あなたのアカウントあるアーキテクチャを安全にデプロイすることができます。 詳細については、「 信頼済みプロファイルを使用して、プロジェクトにアーキテクチャーをデプロイする権限を付与する 」を参照してください。
- 例 2
- プライベートカタログは、CRNによって識別されるカタログ管理サービスのインスタンスである。 プライベートカタログの商品を、カタログを含むアカウントとは別のアカウント検証したい場合があります。 タ ーゲ ッ トアカウント アカウント アカウント内で信頼済みプ ロ フ ァ イ ルを作成す る こ と に よ り、 プ ラ イ ベー ト カ タ ロ グに、 タ ーゲ ッ トアカウント内の検証用 リ ソ ース を作成す る ア ク セ ス を与え る こ と がで き ます。 次に、カタログ CRN を使用してサービス・インスタンスを信頼されたプロファイルにリンクすることで、カタログとの信頼関係を確立します。 詳しくは、 プライベート・カタログへのソフトウェア搭載を ご覧ください。
信頼されたプロファイルを使用してアカウント間でリソースを共有することは、限られたサービスのセットで機能し、サービスのためのアカウントための一般的な方法ではありません。
IBM Cloud サービスがアカウント内の特定のリソースにアクセスできる方法を定義するには、以下の手順を実行します:
-
サービス・インスタンスを一意に識別するクラウド資源名(CRN)については、サービスの管理者に尋ねてください。 CRN は、操作を許可するために使用されます。
サービス管理者は、ナビゲーション・メニュー・アイコン
> Resource list を開き、対象となるサービス名をクリックすることでCRNを見つけることができます。 詳細セクションでCRNをコピーする。 プライベート・カタログCRNについては、「 管理 」>「 カタログ 」>「 プライベート・カタログ 」と進み、プライベート・カタログを選択する。 アクション...」をクリックします。 > カタログの詳細を編集 ]をクリックして、カタログCRNを見つけます。
-
IBM Cloud コンソールで 「管理」 > 「アクセス (IAM)」 をクリックし、「トラステッド・プロファイル」 を選択します。
-
「プロファイルの作成」 をクリックします。
-
名前と説明を入力してプロフィールを定義し、[ 続行] をクリックします。
説明では、信頼済みプロファイルで利用可能なアクションのリストを指定します。
-
後で決定する 」を選択すると、詳細を追加する前に信頼できるプロフィールを作成できます。 あるいは、以下のステップを踏んで信頼を確立する:
- IBM Cloud® サービスを選択する。
- サービス管理者が提供したCRNを入力します。
IBM Cloud サービスは、信頼を確立するための条件を使用しない静的なIDである。 その代わりに、CRNを使用して信頼されたエンティティとの直接リンクを作成することで信頼を確立する。
-
「続行」 をクリックします。
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
-
または、アクセス権を割り当てずに[ 作成 ]をクリックする。
コンソールでサービスIDとの信頼関係を確立する
信頼されたプロファイルを使用して、サービスIDにアカウント クラシック・インフラストラクチャーアクセスを与えることができます。 あるアカウントサービスIDをターゲットアカウントアクセスさせるには、ターゲットアカウント信頼されたプロファイルを作成する。 サービスIDがアカウント内の特定のリソースにアクセスできる方法を定義するには、次の手順を実行します:
-
もう一方のアカウント管理者に、サービスIDを識別するサービスID値を尋ねる。
管理者は、[ 管理 ]>[ アクセス(IAM) ]>[ サービスID ]と進み、対象となるサービスIDを選択することで、サービスIDの値を見つけることができる。 詳細」をクリックし、
ServiceIdで始まるIDをコピーする。 -
IBM Cloud コンソールで 「管理」 > 「アクセス (IAM)」 をクリックし、「トラステッド・プロファイル」 を選択します。
-
「プロファイルの作成」 をクリックします。
-
名前と説明を入力してプロフィールを定義し、[ 続行] をクリックします。
説明では、この信頼済みプロファイルで利用可能なアクションのリストを指定します。
-
後で決定する 」を選択すると、詳細を追加する前に信頼できるプロフィールを作成できます。 あるいは、以下のステップを踏んで信頼を確立する:
- サービスIDを選択
- 管理者が提供したサービスIDの値を入力してください。
-
「続行」 をクリックします。
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
-
または、アクセス権を割り当てずに[ 作成 ]をクリックする。
サービスIDは、信頼を確立するための条件を使用しない静的なIDである。 その代わりに、サービスIDのメタデータのID値を使用して、信頼できるエンティティとの直接リンクを作成することで信頼を確立します。
信頼できるプロファイルにアクセスを割り当てる
連携ユーザー、コンピュート・リソース、 IBM Cloud サービス、またはサービス ID との信頼関係を確立した後、アクセスを割り当てることができます。
アカウント Softlayer アカウントリンクされている場合にのみ、 クラシック・インフラストラクチャー割り当てることができます。
- アクセスを割り当てる。
- トラステッド・プロファイルにアクセス権限を割り当てるには、そのプロファイルを 1 つ以上のアクセス・グループに追加します。 これにより、作成したアクセス・グループに存在するポリシーを使用できます。
- アクセスグループ ]を選択し、信頼済みプロファイルを追加するグループをすべて選択します。 管理するアクセス権限を持つアクセス・グループにのみユーザーを割り当てることができます。
- 追加 をクリックします。
- アクセス・ポリシーを使用して、トラステッド・プロファイルへのアクセス権限を割り当てます。
- 「アクセス・ポリシー」 を選択します。 アクセス権限のレベルに基づいて、IAM のポリシーとクラシック・インフラストラクチャーの権限を割り当てることができます。
- アイデンティティとアクセスを可能にするすべてのサービス、 アカウント マネジメント・サービス、 すべてのIAM アカウント管理サービス のように、単一のサービスまたはサービスのグループを選択します。 「次へ」をクリックします。
- 選択した属性に基づいて、 すべてのリソースまたは特定のリソースへのアクセスをスコープします。 そして、「次へ (Next)」 をクリックします。
- アクセス権限のスコープを定義するために役割と許可の任意の組み合わせを選択し、確認をクリックします。
- 追加をクリックして、サマリーにポリシー構成を追加します。
- ユーザー、デバイス、またはサービスを選択してから、細分化された許可の組み合わせを選択すると、クラシック・インフラストラクチャー・アクセス権限を割り当てることができます。
- トラステッド・プロファイルにアクセス権限を割り当てるには、そのプロファイルを 1 つ以上のアクセス・グループに追加します。 これにより、作成したアクセス・グループに存在するポリシーを使用できます。
- 「作成」 をクリックします。
コンソール体験のカスタマイズ
信頼済みプロファイルの管理者として、信頼済みプロファイルを適用するユーザーのために、 IBM Cloud コンソールのバナーに表示されるナビゲーション項目をカスタマイズできます。 この機能は、ユーザーがアクセスする必要のないナビゲーション要素を非表示にし、ユーザーがアクセス権のない領域を探索できないようにすることで、コンソール体験を合理化するのに役立ちます。
信頼済みプロファイルのコンソールナビゲーションをカスタマイズするには、以下の手順を実行します:
- IBM Cloud コンソールで、「 管理」>「アクセス(IAM)」の順にクリックし、「 信頼済みプロファイル 」をクリックする。
- カスタマイズしたい信頼できるプロファイルを選択し、 Console experienceをクリックします。
- デフォルトのランディングページとして使用したいランディングページを選択し、[ 保存] をクリックします。
- コンソールバナーに含めるナビゲーション項目を選択します。
- 信頼済みプロファイルが特定の製品にアクセスできるプライベート・カタログを選択し、[ 保存]をクリックします。
CLI を使用したフェデレーテッド・ユーザーとの信頼の確立
特定のリソースにアクセスできるフェデレーテッド・ユーザーを定義するには、以下の手順を実行します。
-
次のコマンドを実行して、トラステッド・プロファイルを作成します。
ibmcloud iam trusted-profile-create my-profile -d "sample trusted profile"詳細は CLIリファレンスを 参照。
-
トラステッド・プロファイルの条件を作成するには、
ibmcloud iam trusted-profile-rule-createコマンドを実行します。ibmcloud iam trusted-profile-rule-create my-profile --name my-rule --type Profile-SAML --conditions claim:cn,operator:EQUALS,value:my_user --realm-name https://w3id.sso.ibm.com/auth/sps/samlidp2/saml20 --expiration 1200詳細は CLIリファレンスを 参照。
-
以下のコマンドを実行して、アカウント内のすべてのリソースに対する
Viewer役割を持つアクセス・ポリシーを作成します。ibmcloud iam trusted-profile-policy-create --roles Viewer詳細は CLIリファレンスを 参照。
CLI を使用したコンピュート・リソースの信頼の確立
以下の手順を実行すると、より効果的にコンピュート・リソースへのアクセス権限の付与を制御できます。
IBM Cloud Kubernetes Service では、トラステッド・プロファイルはバージョン 1.21 以降でのみサポートされます。 無料の IBM Cloud Kubernetes Service クラスターでは、これより前のバージョンしか作成されません。 標準プランでは、これより前のバージョンのクラスターを作成する選択肢もあるので、必ずバージョン 1.21 以降を選択するようにしてください。
-
次のコマンドを実行して、トラステッド・プロファイルを作成します。
ibmcloud iam trusted-profile-create sample-compute-profile -d "sample trusted profile for compute resources"詳細は CLIリファレンスを 参照。
-
ibmcloud iam trusted-profile-rule-createコマンドを使用して、トラステッド・プロファイルの条件を作成します。ibmcloud iam trusted-profile-rule-create sample-compute-profile --name cr-rule --type Profile-CR --conditions claim:namespace,operator:EQUALS,value:default --conditions claim:crn,operator:EQUALS,value:crn:test:bluemix:public:containers-kubernetes:us-south:a/test:: --cr-type IKS_SA詳細は CLIリファレンスを 参照。
直接リンクを作成することもできます。
ibmcloud iam trusted-profile-link-create sample-compute-profile --name my_link --cr-type IKS_SA --link-name default --link-namespace default --link-crn my_compute_resource_crn詳細は CLIリファレンスを 参照。
-
次のコマンドを実行してアクセス・ポリシーを作成します。
ibmcloud iam trusted-profile-policy-create --roles Viewer詳細は CLIリファレンスを 参照。
CLIを使用して、 IBM Cloud サービスとの信頼関係を確立する
別のアカウント IBM Cloud サービスが、あなたのアカウント操作を実行するためにトークンを必要とするかもしれません。 IBM Cloud サービスがアカウント内の特定のリソースにアクセスできる方法を定義するには、以下の手順を実行します:
-
サービスインスタンスを一意に識別するCRNについては、別のアカウントサービスの管理者に尋ねてください。 CRN は、操作を許可するために使用されます。
サービス管理者は、ナビゲーション・メニュー・アイコン
> Resource list を開き、対象となるサービスをクリックすることでCRNを見つけることができます。 詳細セクションでCRNをコピーする。
-
直接リンクで信頼関係を築く
ibmcloud iam trusted-profile-link-create sample-cloudservice-profile --name my_cloudservice_link --link-crn `crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource`詳細は CLIリファレンスを 参照。
-
次のコマンドを実行してアクセス・ポリシーを作成します。
ibmcloud iam trusted-profile-policy-create --roles Viewer詳細は CLIリファレンスを 参照。
CLIを使用してサービスIDとの信頼関係を確立する
サービスIDがアカウント内の特定のリソースにアクセスできる方法を定義するには、次の手順を実行します:
信頼済みプロファイルを使用して、サービスIDにアカウント クラシック・インフラストラクチャー サービスの呼び出しへのアクセスを与えることができます。
-
もう一方のアカウント管理者に、サービスIDを識別するサービスID値を尋ねる。
管理者は、[ 管理 ]>[ アクセス(IAM) ]>[ サービスID ]と進み、対象となるサービスIDを選択することで、サービスID値を見つけることができる。 詳細」をクリックし、
ServiceIdで始まるIDをコピーする。 -
直接リンクで信頼関係を築く
ibmcloud iam trusted-profile-link-create sample-serviceid-profile --name my_serviceid_link --link-crn `crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource`詳細は CLIリファレンスを 参照。
-
次のコマンドを実行してアクセス・ポリシーを作成します。
ibmcloud iam trusted-profile-policy-create --roles Viewer詳細は CLIリファレンスを 参照。
CLIを使用して信頼済みプロファイルにアクセスを割り当てる
連携ユーザー、コンピュート・リソース、 IBM Cloud サービス、またはサービス ID との信頼関係を確立した後、アクセスを割り当てることができます。
アカウント Softlayer アカウントリンクされている場合にのみ、 クラシック・インフラストラクチャー割り当てることができます。
コマンドを使用します。 trusted-profile-policy-create を使用して、信頼済みプロファイルにアクセスポリシーを割り当てます。 次の例では、 アカウント マネジメント・サービス に Administrator
ロールを持つポリシーを割り当てています:
ibmcloud iam trusted-profile-policy-create Profile-36f5c562-1t36-4442-b7f0-2663c85386f1 --roles Administrator --attributes serviceType=service
API を使用したフェデレーテッド・ユーザーとの信頼の確立
特定のリソースにアクセスできるフェデレーテッド・ユーザーを定義するには、以下の手順を実行します。
-
アカウント ID を指定して、トラステッド・プロファイルを作成します。
curl -X POST 'https://iam.cloud.ibm.com/v1/profiles' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "name": "My Nice Profile", "description": "My Nice Profile - desc", "account_id": "ACCOUNT_ID" }'説明として、このトラステッド・プロファイルで実行可能なアクションのリストを記入してください。
-
トラステッド・プロファイルの条件を作成します。 フェデレーテッド・ユーザーの場合は、
type属性にProfile-SAMLを設定します。realm-nameは IdP の URL です。 詳しくは、IAM Identity Services API を参照してください。curl -X POST 'https://iam.cloud.ibm.com/v1/profiles/PROFILE_ID/rules' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "type": "Profile-SAML", "realm_name": "https://www.example.org/my-nice-idp", "expiration": 43200, "conditions": [ { "claim": "groups", "operator": "EQUALS", "value": "\"cloud-docs-dev\"" } ] }'トラステッド・プロファイル 1 つあたりクレーム・ルール 20 個という制限があります。
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
APIによるコンピュート・リソースとの信頼関係の確立
以下の手順を実行すると、より効果的にコンピュート・リソースへのアクセス権限の付与を制御できます。
IBM Cloud Kubernetes Service では、トラステッド・プロファイルはバージョン 1.21 以降でのみサポートされます。 無料の IBM Cloud Kubernetes Service クラスターでは、これより前のバージョンしか作成されません。 標準プランでは、これより前のバージョンのクラスターを作成する選択肢もあるので、必ずバージョン 1.21 以降を選択するようにしてください。
-
アカウント ID を指定して、トラステッド・プロファイルを作成します。
curl -X POST 'https://iam.cloud.ibm.com/v1/profiles' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "name": "My Nice Profile", "description": "My Nice Profile - desc", "account_id": "ACCOUNT_ID" }'説明として、このトラステッド・プロファイルで実行可能なアクションのリストを記入してください。
-
アクセスを必要とするリソースのみをターゲットにした条件を指定して、最小特権の原則に従うクレーム・ルールをトラステッド・プロファイルに作成します。 条件は、既存および将来のすべてのリソースに適用されます。 特定の既存のリソースとの直接リンクを作成することもできます。
- 条件を整える
- コンピュート・リソースの場合、
type属性をProfile-CRに設定する。 詳しくは、IAM Identity Services API を参照してください。
curl -X POST 'https://iam.cloud.ibm.com/v1/profiles/PROFILE_ID/rules' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "type": "Profile-CR", "conditions": [ { "claim": "namespace", "operator": "EQUALS", "value": "\"default123\"" } ] }'トラステッド・プロファイル 1 つあたりクレーム・ルール 20 個という制限があります。
- Direct Link の作成
- 特定の既存のリソースとの直接的なリンクを確立することができる。
curl -X POST 'https://iam.cloud.ibm.com/v1/profiles/PROFILE_ID/links' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{ "name": "my link", "cr_type": "VSI", "is_cross_account": true, "link": { "crn": "crn:v1:staging:public:iam-identity::a/18e3020749ce4744b0b472466d61fdb4::computeresource:Fake-Compute-Resource", "namespace": "default", "name": "my compute resource name" } }'
-
(オプション) 信頼済みプロファイルにアクセスを割り当てます。
APIを使用した信頼済みプロファイルへのアクセス割り当て
連携ユーザー、コンピュート・リソース、 IBM Cloud サービス、またはサービス ID との信頼関係を確立した後、アクセスを割り当てることができます。
アカウント Softlayer アカウントリンクされている場合にのみ、 クラシック・インフラストラクチャー割り当てることができます。
次の例では、 アカウント マネジメント・サービス に Administrator ロールを持つポリシーを割り当てています:
curl -X POST \
'https://iam.cloud.ibm.com/v1/policies' \
-H 'Authorization: $TOKEN'\
-H 'Content-Type: application/json'\
-d '{
"type": "access",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "Iam-Profile-35f55552-1e36-4442-z7f0-2673c85386f9"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Administrator"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceType",
"value": "platform-service"
}
]
}
]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
.name("iam_id")
.value("Iam-Profile-35f55552-1e36-4442-z7f0-2673c85386f9")
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(subjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::role:Administrator")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("exampleAccountId")
.operator("stringEquals")
.build();
ResourceAttribute serviceTypeResourceAttribute = new ResourceAttribute.Builder()
.name("serviceType")
.value("platform-service")
.operator("stringEquals")
.build();
PolicyResource policyResources = new PolicyResource.Builder()
.addAttributes(accountIdResourceAttribute)
.addAttributes(serviceTypeResourceAttribute)
.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: "Iam-Profile-35f55552-1e36-4442-z7f0-2673c85386f9",
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Administrator',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'exampleAccountId',
operator: 'stringEquals',
};
const serviceTypeResourceAttribute = {
name: 'serviceType',
value: 'platform-service',
operator: 'stringEquals',
};
const policyResources = [
{
attributes: [accountIdResourceAttribute, serviceTypeResourceAttribute]
},
];
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='Iam-Profile-35f55552-1e36-4442-z7f0-2673c85386f9')])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Administrator')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='platform-service')
policy_resources = PolicyResource(
attributes=[account_id_resource_attribute,
service_type_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("Iam-Profile-35f55552-1e36-4442-z7f0-2673c85386f9"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Administrator"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr("ACCOUNT_ID"),
Operator: core.StringPtr("stringEquals"),
}
serviceTypeResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceType"),
Value: core.StringPtr("platform-service"),
Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
Attributes: []iampolicymanagementv1.ResourceAttribute{
*accountIDResourceAttribute, *serviceTypeResourceAttribute},
}
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))