VPC: IBM Cloud Object Storage での許可された IP アドレスのセットアップ

仮想プライベートクラウド

VPC Cloud サービス・エンドポイントの送信元 IP アドレスに、IBM Cloud Object Storage バケットへのアクセスを許可することができます。 許可された IP アドレスをセットアップすると、それらの IP アドレス (例えばアプリ・ポッドのものなど) からしかバケット・データにアクセスできなくなります。

最小限必要な許可
Red Hat OpenShift on IBM Cloud サービスに対するマネージャーのサービス・アクセス役割。
IBM Cloud Object Storage サービスに対するライターのサービス・アクセス役割。
  1. 指示に従って、ibmc Helm プラグインをインストールします。 必ず ibm-object-storage-plugin をインストールし、 bucketAccessPolicy オプションを true に設定してください。

  2. IBM Cloud Object Storage インスタンスに対するManagerの HMAC サービス資格情報 1 つと Writerの HMAC サービス資格情報 1 つを作成します。

  3. IBM Cloud Object Storage のマネージャーの資格情報の apikey を base64 でエンコードします。

    echo -n "<cos_manager_apikey>" | base64
    
  4. IBM Cloud Object Storage のライターの資格情報の access-key および secret-key を base64 でエンコードします。

    echo -n "<cos_writer_access-key>" | base64
    echo -n "<cos_writer_secret-key>" | base64
    
  5. エンコードした値を指定してシークレットの構成ファイルを作成します。 access-key および secret-key には、作成したライターの HMAC 資格情報の access-key および secret-key を base64 でエンコードしたものを入力します。 res-conf-apikey には、マネージャーの HMAC 資格情報の apikey を base64 でエンコードしたものを入力します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
    type: ibm/ibmc-s3fs
    data:
      access-key: # Enter your base64 encoded COS Writer access-key
      secret-key: # Enter your base64 encoded COS Writer secret-key
      res-conf-apikey: # Enter your base64 encoded COS Manager api-key
    
  6. クラスター内にシークレットを作成します。

    oc create -f secret.yaml
    
  7. このシークレットが作成されたことを確認します。

    oc get secrets
    
  8. 作成したシークレットを使用する PVC を作成します。 データをキャッシュに入れるバケットを自動的に作成するために、ibm.io/auto-create-bucket: "true" および ibm.io/auto_cache: "true" アノテーションを設定します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc_name>
      annotations:
        ibm.io/auto-create-bucket: "true"
        ibm.io/auto-delete-bucket: "false"
        ibm.io/auto_cache: "true"
        ibm.io/bucket: "<bucket_name>"
        ibm.io/secret-name: "<secret_name>"
        ibm.io/secret-namespace: "<secret-namespace>" # By default, the COS plug-in searches for your secret in the same namespace where you create the PVC. If you created your secret in a namespace other than the namespace where you want to create your PVC, enter the namespace where you created your secret.
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 8Gi
      storageClassName: ibmc-s3fs-standard-regional
      volumeMode: Filesystem
    
  9. VPC の Cloud サービス・エンドポイントの送信元 IP アドレスのリストを取得します。

    1. VPC のリストを取得します。

      ibmcloud is vpcs
      
    2. VPC の詳細を取得し、Cloud サービス・エンドポイントの送信元 IP アドレスをメモします。

      ibmcloud is vpc <vpc_ID>
      

      出力例

      ...                                              
      Cloud Service Endpoint source IP addresses:    Zone         Address      
                                                  us-south-1   10.249.XXX.XX      
                                                  us-south-2   10.249.XXX.XX     
                                                  us-south-3   10.249.XXX.XX
      
  10. VPC の Cloud サービス・エンドポイントの送信元 IP アドレスが IBM Cloud Object Storage バケットで許可されていることを確認します。

  11. IBM Cloud Object Storage のリソース・リストから、IBM Cloud Object Storage インスタンスを選択し、PVC で指定したバケットを選択します。

  12. 「アクセス・ポリシー」>**「許可された IP」**を選択し、VPC の Cloud サービス・エンドポイントの送信元 IP アドレスが表示されていることを確認します。

コンソールからバケットの読み取りやバケットへの書き込みを行うことはできません。 バケットにはクラスターのアプリ・ポッドの中からしかアクセスできません。

  1. 作成した PVC を参照するデプロイメント YAML を作成します

  2. クラスター内にアプリを作成します。

oc create -f app.yaml
  1. アプリ・ポッドがRunningであることを確認します。
oc get pods | grep <app_name>
  1. ボリュームがマウントされていること、および COS バケットの読み書きが行えることを確認します。

  2. アプリ・ポッドにログインします。

    oc exec -it <pod_name> bash
    
  3. COS バケットがアプリ・ポッドからマウントされていること、および COS バケットの読み書きが行えることを確認します。 disk free (df) コマンドを実行して、システムの使用可能なディスクを表示します。 COS バケットには、s3fs ファイル・システム・タイプと、PVC で指定したマウント・パスが表示されます。

    df
    

    この例では、COS バケットは /cos-vpc にマウントされています。

    Filesystem        1K-blocks    Used    Available Use% Mounted on
    overlay           102048096 9071556     87786140  10% /
    tmpfs                 65536       0        65536   0% /dev
    tmpfs               7565792       0      7565792   0% /sys/fs/cgroup
    shm                   65536       0        65536   0% /dev/shm
    /dev/vda2         102048096 9071556     87786140  10% /etc/hosts
    s3fs           274877906944       0 274877906944   0% /cos-vpc
    tmpfs               7565792      44      7565748   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs               7565792       0      7565792   0% /proc/acpi
    tmpfs               7565792       0      7565792   0% /proc/scsi
    tmpfs               7565792       0      7565792   0% /sys/firmware
    
  4. ディレクトリーを、COS バケットがマウントされているディレクトリーに変更します。 この例では、バケットは /cos-vpc にマウントされています。

    cd cos-vpc
    
  5. test.txt ファイルを COS バケットに書き込み、ファイルのリストを表示して、そのファイルが書き込まれたことを確認します。

    touch test.txt && ls
    
  6. ファイルを削除し、アプリ・ポッドからログアウトします。

    rm test.txt && exit