サービスを呼び出すためのインスタンスの構成
Compute Cloud@Customerコンピュート・インスタンスは、インスタンスで実行されているアプリケーションが、Compute Cloud@Customerユーザーがリソースを管理するためにサービスを呼び出す方法と同様に、サービスをコールし、リソースを管理できるように構成できます。
インスタンスを認可者(またはプリンシパル)にでき、サービス・リソースに対するアクションを実行できるIAMサービス機能は、インスタンス・プリンシパルと呼ばれます。
インスタンスをプリンシパルとして設定および使用するには、次のステップを実行します。
-
インスタンス・ファイアウォールを構成して、インスタンスがサービス・エンドポイントにアクセスできるようにします。サービスのコールを許可するためのインスタンス・ファイアウォールの構成を参照してください
-
必要なリソースにアクセスする権限を付与する動的グループ(テナンシで構成)にインスタンスが含まれていることを確認します。動的グループの管理を参照してください。
インスタンスは、動的グループの一致ルールで指定されたコンパートメントで作成または移動する必要があります。または、インスタンスには、一致ルールで指定されたリソース・タグが割り当てられている必要があります。動的グループを定義するための一致ルールの記述を参照してください。
- Java SDK、Python SDK、CLIまたはTerraformのインスタンス・プリンシパル認可を有効にします。SDK、CLIまたはTerraformの構成を参照してください。
サービスのコールを許可するインスタンス・ファイアウォールの構成
特権ユーザーとして、インスタンス・ファイアウォール構成を変更して、インスタンスがiaas
やidentity
などのエンドポイントに接続できるようにします。
-
更新されたIPテーブル構成を保存します。
iptables-save > /etc/sysconfig/iptables.rules
-
スクリプト
/sbin/restore-iptables.sh
を作成します。#!/bin/sh /sbin/iptables-restore < /etc/sysconfig/iptables.rules
-
スクリプトの実行可能ビットを設定します。
chmod +x /sbin/restore-iptables.sh
-
次の内容でファイル
/etc/systemd/system/restore-iptables.service
を作成します。[Unit] Description=Restore IP Tables After=cloud-final.service [Service] ExecStart=/sbin/restore-iptables.sh User=root Group=root Type=oneshot [Install] WantedBy=multi-user.target
-
systemd
マネージャ構成をリロードします。systemctl daemon-reload
-
サービスを有効にします。
systemctl enable restore-iptables
サービスの呼出しを許可するためのインスタンス証明書の構成
デフォルトでは、エンドポイント(iaas
やidentity
など)は、そのCompute Cloud@Customerに固有のCAによって署名された証明書を提供します。デフォルトでは、OSは、このCompute Cloud@Customerに固有のCAによって署名された証明書を信頼しません。提供された証明書をOSが信頼しない場合、OCI SDKまたはCLIの使用を試みると、CERTIFICATE_VERIFY_FAILED
エラーで失敗します。
インスタンスでCI SDKまたはCLIを正常に使用するには、このトピックで説明するソリューションのいずれかを実装します。
インスタンスにSSHを実行できるユーザーは、インスタンスに付与された権限を自動的に継承します。インスタンスに権限を付与する前に、誰がそのインスタンスにアクセスできるかを認識し、インスタンスに付与する権限を付与する必要があります。
オプション1: 使用するCAバンドルをSDKコードで指定します
このメソッドでは、アプライアンス固有のCAバンドルがインスタンスにコピーされますが、サーバーの証明書(--insecure
)は検証されません。セキュリティを確保するには、取得したバンドルのコンテンツ(external_ca.crt
)を確認します。
-
Compute Cloud@Customerの
iaas
エンドポイントから証明書を取得します。curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
このコマンドは、起動時にインスタンスに渡されるスクリプト内に、
--user-data-file
オプションまたは--metadata
オプションをuser_data
フィールドとともに使用して指定できます。このスクリプトは、初期化中にインスタンス内でcloud-init
によって実行されるため、多くのインスタンスでこの証明書ファイルを手動で取得する手間が省けます。 -
external_ca.crt
ファイルに保存されたCAバンドルの内容を確認します。 -
Python SDKコードでCAバンドルを指定します。
signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner( federation_client_cert_bundle_verify="/home/opc/external_ca.crt" ) identity_client = oci.identity.IdentityClient(config={}, signer=signer) identity_client.base_client.session.verify = "/home/opc/external_ca.crt"
オプション2: Oracle Compute Cloud@Customer CAバンドルをグローバルに信頼
この方法は前述の方法と同じですが、SDKコードでCAバンドルを指定するかわりに、この方法によってCAバンドルがトラスト・チェーンに追加されます。
CAバンドルがトラスト・チェーンに追加されると、このコンピュート・インスタンス上のすべてのアプリケーションは、このバンドルで指定されたCAで署名された証明書を信頼します。これが許容可能なセキュリティ・リスクであるかどうかを検討します。
-
Compute Cloud@Customerの
iaas
エンドポイントから証明書を取得します。curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
-
external_ca.crt
ファイルに保存されたCAバンドルの内容を確認します。 -
グローバルCAトラスト・チェーンを更新します。
cp external_ca.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract