サービスを呼び出すためのインスタンスの構成

Compute Cloud@Customerコンピュート・インスタンスは、インスタンスで実行されているアプリケーションが、Compute Cloud@Customerユーザーがリソースを管理するためにサービスを呼び出す方法と同様に、サービスをコールし、リソースを管理できるように構成できます。

インスタンスを認可者(またはプリンシパル)にでき、サービス・リソースに対するアクションを実行できるIAMサービス機能は、インスタンス・プリンシパルと呼ばれます。

インスタンスをプリンシパルとして設定および使用するには、次のステップを実行します。

サービスのコールを許可するインスタンス・ファイアウォールの構成

特権ユーザーとして、インスタンス・ファイアウォール構成を変更して、インスタンスがiaasidentityなどのエンドポイントに接続できるようにします。

  1. 更新されたIPテーブル構成を保存します。

    iptables-save > /etc/sysconfig/iptables.rules
  2. スクリプト/sbin/restore-iptables.shを作成します。

    #!/bin/sh
    /sbin/iptables-restore < /etc/sysconfig/iptables.rules
  3. スクリプトの実行可能ビットを設定します。

    chmod +x /sbin/restore-iptables.sh
  4. 次の内容でファイル/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
  5. systemdマネージャ構成をリロードします。

    systemctl daemon-reload
  6. サービスを有効にします。

    systemctl enable restore-iptables

サービスの呼出しを許可するためのインスタンス証明書の構成

デフォルトでは、エンドポイント(iaasidentityなど)は、その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)を確認します。

  1. Compute Cloud@Customeriaasエンドポイントから証明書を取得します。

    curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain

    このコマンドは、起動時にインスタンスに渡されるスクリプト内に、--user-data-fileオプションまたは--metadataオプションをuser_dataフィールドとともに使用して指定できます。このスクリプトは、初期化中にインスタンス内でcloud-initによって実行されるため、多くのインスタンスでこの証明書ファイルを手動で取得する手間が省けます。

  2. external_ca.crtファイルに保存されたCAバンドルの内容を確認します。

  3. 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で署名された証明書を信頼します。これが許容可能なセキュリティ・リスクであるかどうかを検討します。

  1. Compute Cloud@Customeriaasエンドポイントから証明書を取得します。

    curl --insecure -sS -o external_ca.crt --noproxy "*" https://iaas.ccc_name.domain_name/cachain
  2. external_ca.crtファイルに保存されたCAバンドルの内容を確認します。

  3. グローバルCAトラスト・チェーンを更新します。

    cp external_ca.crt /etc/pki/ca-trust/source/anchors/
    update-ca-trust extract