LoginSignup
5
6

More than 1 year has passed since last update.

Oracle Cloud:プライベートサブネットからObject Storageへアクセスしてみてみた

Last updated at Posted at 2018-08-07

■Object Storage と Service Gateway

OCI の Object Storage は AWSのS3と同じ インターネット経由でアクセスされるパブリック・サービスです。
Service Gateway は、プライベートIPアドレスを持たないクラウド・リソースに対するプライベート・アクセスを提供します。
Service Gateway を使用している場合は、許可されたVCNまたはCIDRブロックからの要求のみを許可することで、Object Storageを保護できます。

00_ServiceGWイメージ.png

本構成後、Object Storageへのアクセステストを行います。
 ・CLIによるファイル転送
 ・Pre-Authenticated Request(PAR)ファイル転送によるデータ共有(おまけ)
 ・Database Cloudのバックアップテスト
 ・Cross Region Copy(おまけ)

■本検証構成イメージ

Private Subnet で構成された DBインスタンスが Object Storage に プライベート・アクセスできるよう Service Gateway を構成します
00_構成イメージ2.png

■Service Gateway設定

●1. Service Gateway作成

①設定するVCNから「Service Gateways」を選択し、[Create Service Gateway]ボタンをクリックして、
以下項目を設定し、[Create]ボタンをクリック

・NAME:適切な名前を設定
・SERVICES: Object Storage を選択

01_SG作成01.png

②作成した Service Gatewayを確認

02_SG作成02.png

●2. Route Table設定

①設定するVCNから、設定する「Route Tables」を選択し、[Edit Route Rules]ボタンをクリックし、以下設定を行い[SAVE]をクリック

・TARGET TYPE:「Service Gateway」を選択
・DESTINATION SERVICE:「Object Storage」 を選択
・TARGET SERVICE GATEWAY:作成した Service Gateway を選択

03_Route設定01.png

②設定されたことを確認

04_Route設定02.png

●3. Security Lists(Firewall) 設定

例)HTTPS(TCPポート443)のトラフィックをサブネットからオブジェクトストレージに出力するステートフルルールを追加したい場合、ルールを追加する手順は次のようにします

①設定するVCNから、設定する「Security Lists」を選択し、[Edit Edit All Rules]ボタンをクリックして、以下項目を設定し、[Save Security List Rules]ボタンをクリック

・Stateless check box : チェック無し
・Destination Type: 「Service」を選択
・Destination Service: 「Object Storage」を選択
・IP Protocol: 「TCP」を選択
・Source Port Range: 「All」を記入
・Destination Port Range: 「443」を記入

05_SecurityList設定01.png

②設定されたことを確認

06_SecurityList設定02.png

■Object Storageアクセス確認

上記手順により Service Gateway 経由で Object Storageへアクセスできます
まず、Object Storageのbucketを作成しテストデータを転送します

●1. bucket作成

ここでは、OCIの CLI(Command Line Interface)で test-bucket01 バケットを作成

[opc@db01 ~]$ oci os bucket create --name test-bucket01 -c ocid1.compartment.oc1..aaaaaa4acompartment
    {
      "data": {
        "compartment-id": "ocid1.compartment.oc1..aaaaaa4acompartment",
        "created-by": "ocid1.user.oc1..aaaaate32rguser",
        "defined-tags": {},
        "etag": "ccec3fac-efc7-4072-9723-f265fd3fe8e8",
        "freeform-tags": {},
        "metadata": {},
        "name": "test-bucket01",
        "namespace": "namespace014419",
        "public-access-type": "NoPublicAccess",
        "storage-tier": "Standard",
        "time-created": "2018-08-07T03:55:22.108000+00:00"
      },
      "etag": "ccec3fac-efc7-4072-9723-f265fd3fe8e8"
    }

●2. bucket作成確認

[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| compartment-id                             | created-by                      | defined-tags | etag           | freeform-tags | name          | namespace   | time-created                     |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| ocid1.compartment.oc1..aaaaaa4acompartment | ocid1.user.oc1..aaaaate32rguser | None         | etag-1234-5678 | None          | test-bucket01 | namespace014419 | 2018-08-07T03:55:22.108000+00:00 |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+

※作成したBuket削除手順

    $ oci os bucket delete --name test-bucket01

●3. テストファイルをBuketへ配置

・テストファイル作成

[opc@db01 ~]$ echo "This file is test file01" > /tmp/test-file01.txt

●4. テストファイル転送

[opc@db01 ~]$  oci os object put -ns namespace014419 -bn test-bucket01 --file /tmp/test-file01.txt --name test-file01.txt --no-multipart
    Uploading object  [####################################]  100%
    {
      "etag": "72D0E7F54E161C95E053C23BC00AFEAD",
      "last-modified": "Tue, 7 Aug 2018 04:01:48 GMT",
      "opc-content-md5": "TtMIEUm1JQ1/QFy5M/h4iA=="
    }

●5. テストファイル転送確認

[opc@db01 ~]$ oci os object list -ns namespace014419 -bn test-bucket01 --output table
    +--------------------------+-----------------+------+----------------------------------+
    | md5                      | name            | size | time-created                     |
    +--------------------------+-----------------+------+----------------------------------+
    | TtMIEUm1JQ1/QFy5M/h4iA== | test-file01.txt | 25   | 2018-08-07T04:01:48.810000+00:00 |
    +--------------------------+-----------------+------+----------------------------------+
    prefixes: []

●6. ディレクトリ配下転送

ディレクトリとそのすべてのサブディレクトリ内のファイルのバケットへのアップロードするには次のようにします

[opc@db01 ~]$ oci os object bulk-upload -bn test-bucket01 --src-dir /tmp/

 Uploaded tpch02_01.dmp  [####################################]  100%
 Uploaded tpch02_02.dmp  [####################################]  100%
 Uploaded tpch02_03.dmp  [####################################]  100%

 {
   "skipped-objects": [],
   "upload-failures": {},
   "uploaded-objects": {
     "tpch02_01.dmp": {
       "etag": "59928c1e-570c-40a4-9396-f5ab756010e4",
       "last-modified": "Sun, 12 Sep 2021 11:22:58 GMT",
       "opc-content-md5": "ABOb6Q1MDNIlEsI6rR+oYQ=="
     },
     "tpch02_02.dmp": {
       "etag": "074ed283-1c46-42fa-8c0e-9b9733acc112",
       "last-modified": "Sun, 12 Sep 2021 11:23:21 GMT",
       "opc-multipart-md5": "OEd60NVhjpF6pIV2UlRamw==-50"
     },
     "tpch02_03.dmp": {
       "etag": "313a4993-07fd-4181-a8d3-4ed59e86930a",
       "last-modified": "Sun, 12 Sep 2021 11:24:17 GMT",
       "opc-multipart-md5": "xhLJI2sWlSKFg06e9n6ePg==-50"
     }
   }
 }

■Service Gateway 通信可否テスト

Internet Gatewayは無いため、Service Gateway経由でしか Object Storage にアクセスできません
Service Gatewayの Allow / Block 許可設定で Object Storage にアクセスできるか確認します

●1. Internetアクセスできないこと確認

ます、インターネットに接続できないことを確認
インターネット アクセスを行うとTime out でErrorが出力されます

[opc@db01 ~]$ curl https://www.oracle.com/
    curl: (7) Failed to connect to 2a00:1450:400e:80b::2003: Cannot assign requested address

●2. Service Gateway 通信を 停止

Service Gatewayの コンソール画面で [Block Traffic]をクリック

07_Blockテスト01.png

これで、Object Storage にアクセスすることができなくなります

08_Blockテスト02.png

●3. Object Storage アクセスできないことを確認

bucket アクセスを行うとTime out でErrorが出力されます

[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table

    Usage: oci os bucket list [OPTIONS]

    Error: Unable to retrieve namespace internally. Please provide the namespace using the option "--['namespace-name']".

●4. Service Gateway 通信を許可

Service Gateway の コンソール画面で [Allow Traffic]をクリック

09_Allowテスト01.png

これで、Object Storage にアクセスすることがでます

10_Allowテスト02.png

●5. Object Storage アクセス確認

bucket アクセスできることを確認

[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table
    +--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
    | compartment-id                             | created-by                      | defined-tags | etag           | freeform-tags | name          | namespace   | time-created                     |
    +--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
    | ocid1.compartment.oc1..aaaaaa4acompartment | ocid1.user.oc1..aaaaate32rguser | None         | etag-1234-abcd | None          | test-bucket01 | namespace014419 | 2018-08-07T07:34:22.607000+00:00 |
    +--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+

■ Pre-Authenticated Request(PAR)ファイル転送

"Object StorageのPre-Authenticated Request(PAR)機能は、第三者との間でデータを共有する仕組みで、Object Storage 内の共有したい対象データに期間限定でURLリンクを発行する機能です。
この発行されたリンクをLinuxの wget コマンドで取得することができます。
このwget はPrivate Subnet でもService Gatewayにより取得が可能です。

● PAR作成

① 共有したいファイルの [Pre-Authenticated Requests]を選択し[Create Pre-Authenticated Request]をクリック

PAR03.png

② PAR設定
以下情報を設定し、[Create Pre-Authenticated Request]をクリック
  NAME:適切な名前を設定
  PRE-AUTHENTICATED REQUEST TARGET:BUKET/OBJECTを選択
  ACCESS TYPE:READS/WRITES権限を選択
  EXPIRATOPN DATE/TIME:有効期限を設定

PAR04-1.png

③ 作成されたPARのURLリンクをCopy

PAR05-1.png

● PAR ファイル 取得と確認

取得したい Private Subnet にある Instance から wget でファイル取得

[opc@db01 ~]$ wget https://objectstorage.us-ashburn-1.oraclecloud.com/p/gSDTyRwGD/test-tenancy/bucket/test/test.txt
 --2018-08-04 00:49:47--  https://objectstorage.us-ashburn-1.oraclecloud.com/p/gSDTyRwGD/test-tenancy/bucket /test/test.txt
 Resolving objectstorage.us-ashburn-1.oraclecloud.com... 
 Connecting to objectstorage.us-ashburn-1.oraclecloud.com|:443... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 4 [text/plain]
 Saving to: “test.txt”

 100%[======================================>] 4           --.-K/s   in 0s

 2018-08-04 00:49:53 (225 KB/s) - “test.txt” saved [4/4]

[opc@db01 ~]$ ls
 test.txt

■ Database Cloudのバックアップテスト

Internetを使用しないPrivate Subnetに配置したDatabaseがService Gateway 経由でObject Storageにバックアップできることを確認します
・参考: Installing the Backup Module on the DB System

●DBへ バックアップ・モジュールのインストール

①DBへログインして、oracleユーザーにスイッチ

    ssh -i id_rsa opc@db01
        login as: opc
        sudo su - oracle

②バックアップ・モジュールopc_install.jarのディレクトリに移動

[oracle@db-inst01 ~]$ cd /opt/oracle/oak/pkgrepos/oss/odbcs

③ バックアップ・モジュールをインストール
次の構文でインストールを実施
java -jar opc_install.jar -opcId -opcPass '' -container -walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config -host https://swiftobjectstorage..oraclecloud.com/v1/

パラメータ 内容 今回の設定値
user_id OCIユーザー・アカウントのユーザー名 test@oci.com
auth_token OCIのUser設定で作成したAuth Token gcccUF36O8dwr
bucket_name バケット名 test-bucket01
region_name 参照:Regions and Availability Domains us-ashburn-1
tenant テナント名 oci014419
[oracle@db-inst01 odbcs]$ java -jar opc_install.jar -opcId test@oci.com -opcPass 'gcccUF36O8dwr' -container test-bucket01 -walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config -host https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/oci014419 
    Oracle Database Cloud Backup Module Install Tool, build 12.2.0.1.0DBBKPCSBP_2017-11-28
    Oracle Database Cloud Backup Module credentials are valid.
    Backups would be sent to container test-bucket01.
    Oracle Database Cloud Backup Module wallet created in directory /home/oracle/hsbtwallet.
    Oracle Database Cloud Backup Module initialization file /home/oracle/config created.
    Downloading Oracle Database Cloud Backup Module Software Library from file opc_linux64.zip.
    Download complete.

④作成されたconfigを確認

    [oracle@db-inst01 ~]$ cat /home/oracle/config
        OPC_HOST=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/oci014419 
        OPC_WALLET='LOCATION=file:/home/oracle/hsbtwallet CREDENTIAL_ALIAS=alias_opc'
        OPC_CONTAINER=test-bucket01

●RMANの構成

① .oraenvを使用してORACLE_HOMEおよびORACLE_SID環境変数を設定

    [oracle@db-inst01 ~]$ . oraenv
    ORACLE_SID = [oracle] ? orcl
    The Oracle base has been set to /u01/app/oracle

② RMAN接続

    [oracle@db-inst01 ~]$ rman target /
        Recovery Manager: Release 12.2.0.1.0 - Production on Tue Nov 20 05:38:13 2018

        Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

        connected to target database: ORCL (DBID=1520446095)

③SBTデバイスにバックアップ・モジュールで作成されたconfigファイルを指すようにRMANのDEVICE TYPEを構成

    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';

④その他SBT_TAPEの構成を設定

    RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
    RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';
    RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

⑤RMAN設定確認

RMAN> show all;
    RMAN configuration parameters for database with db_unique_name ORCL_IAD38S are:
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
    CONFIGURE BACKUP OPTIMIZATION ON;
    CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO '%F';
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
    CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 5 BACKUP TYPE TO COMPRESSED BACKUPSET;
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2 G;
    CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS  'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    CONFIGURE MAXSETSIZE TO UNLIMITED; # default
    CONFIGURE ENCRYPTION FOR DATABASE ON;
    CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
    CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
    CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
    CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE';
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+RECO/ORCL_IAD38S/controlfile/snapcf_orcl_iad38s.f';

●Internetアクセスできないこと確認

ます、インターネットに接続できないことを確認
インターネット アクセスを行うとTime out でErrorが出力されます

[opc@db01 ~]$ curl https://www.oracle.com/
    curl: (7) Failed to connect to 2a00:1450:400e:80b::2003: Cannot assign requested address

●Databaseバックアップ

①暗号化を設定
    RMAN> SET ENCRYPTION IDENTIFIED BY "password" ONLY;
        executing command: SET encryption
②DatabaseとARCHIVELOGをバックアップ
RMAN> BACKUP INCREMENTAL LEVEL 0  DATABASE PLUS ARCHIVELOG;
        Starting backup at 20-NOV-18
        current log archived
        allocated channel: ORA_SBT_TAPE_1
        channel ORA_SBT_TAPE_1: SID=20 device type=SBT_TAPE
        channel ORA_SBT_TAPE_1: Oracle Database Backup Service Library VER=12.2.0.2
        allocated channel: ORA_SBT_TAPE_2
        channel ORA_SBT_TAPE_2: SID=494 device type=SBT_TAPE
        channel ORA_SBT_TAPE_2: Oracle Database Backup Service Library VER=12.2.0.2
・・・

②バックアアップを確認


RMAN> list backup;
        List of Backup Sets
        ===================

        BS Key  Type LV Size       Device Type Elapsed Time Completion Time
        ------- ---- -- ---------- ----------- ------------ ---------------
        2       Full    512.00K    SBT_TAPE    00:00:02     20-NOV-18
                BP Key: 2   Status: AVAILABLE  Compressed: YES  Tag: TAG20181120T045035
                Handle: ORCL_12349876_02tilpcr_1_1_20181120_992667035   Media: swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/dbbackupiad/b
          Control File Included: Ckp SCN: 1775556      Ckp time: 20-NOV-18

        BS Key  Type LV Size       Device Type Elapsed Time Completion Time
        ------- ---- -- ---------- ----------- ------------ ---------------
        3       Full    18.00M     SBT_TAPE    00:00:01     20-NOV-18
                BP Key: 3   Status: AVAILABLE  Compressed: NO  Tag: TAG20181120T045037
                Handle: c-12349876-20181120-01   Media: swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/dbbackupiad/b
          SPFILE Included: Modification time: 20-NOV-18
          SPFILE db_unique_name: ORCL_IAD38S
          Control File Included: Ckp SCN: 1775562      Ckp time: 20-NOV-18
・・・

●Object Storage 内に作成されたBackupファイルを確認

opc@inst01 ~]$ oci os object list -bn test-bucket01 --output table
    +--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
    | md5                      | name                                                                                                 | size      | time-created                     |
    +--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
    | +WlfR0qC7S3oz6hWWv5xDg== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/0000000001               | 104857600 | 2018-11-20T06:14:08.362000+00:00 |
    | eLpbVDComN67rCwJ49ePug== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/0000000002               | 78643200  | 2018-11-20T06:14:16.710000+00:00 |
    | rr4Czk+cJDyqOZH0idAV7Q== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/metadata.xml             | 1790      | 2018-11-20T06:14:18.766000+00:00 |
    | CzMoFlorliipXP87X26BhQ== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/31tilu8u_1_1/KTVs8w9V0wwD/0000000001               | 104857600 | 2018-11-20T06:14:08.274000+00:00 |
・・・
    +--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
    prefixes: []

■Cross Region Copy

異なるBucketにオブジェクトをコピーする機能で異なるリージョンにもコピーができます。

●Policy設定

オブジェクトのコピーを実行する場合は、ソース・バケットと宛先バケットの両方への必要なアクセス権が必要なので、下記書式でPolicy Statementを追加したPolicyを作成

・書式:
    allow service objectstorage-<region_name> to manage object-family in compartment <compartment_name>

01_policy01.png

●Cross Region Copy実施

Tokyo Region にある test01ファイルをSeoul Regionにコピーしてみます

①コピーするobjectを選択して、アクション・アイコン(・・・)から[コピー]を選択してクリック
02_Cross-Regin-Copy01.png

②宛先リージョンと宛先Bukets名を設定して[オブジェクトのコピー]をクリック
02_Cross-Regin-Copy02.png

③Sutatusがグリーン色の「完了済」になればOK
02_Cross-Regin-Copy03.png

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6