ノート:
- このチュートリアルではOracle Cloudにアクセスする必要があります。無料アカウントに登録するには、Oracle Cloud Infrastructure Free Tierの使用を開始するを参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
サービス・ゲートウェイの使用
イントロダクション
典型的なOracle Cloud Infrastructureの顧客であれば、パブリックにアドレス可能なエンドポイントを持つOracle Cloud Infrastructure Object Storageサービスにアクセスする必要がある仮想クラウド・ネットワーク(VCN)内にリソースが存在する場合があります。これまでは、パブリック・サブネットまたはNATインスタンスを使用し、VCN内のインターネット・ゲートウェイを使用してサービスにアクセスできます。ただし、プライバシー、セキュリティー、または運用上の問題のために、これらのオプションを使用する必要がない場合もあります。
サービス・ゲートウェイは、次の機能を有効にすることで、前述の懸念事項を緩和します。
-
VCNとObject Storageの間のプライベート接続:パブリック・インターネットにインスタンスを公開することなく、VCNにサービス・ゲートウェイを追加し、VCNのプライベート・アドレス空間を使用してObject Storageにアクセスできます。VCNにパブリック・サブネット、NATインスタンスまたはインターネット・ゲートウェイは必要ありません。
-
オブジェクト・ストレージ・バケットのセキュリティを強化:オブジェクト・ストレージ・バケットへのアクセスを、認可されたVCNから、またはサブネット内の特定の範囲のIPアドレスから制限できます。IAMポリシーのVCNおよびIPアドレスに条件付き参照を追加できます。これは、サービス・ゲートウェイを介した接続を開始した場合にのみ満たすことができます。
キー・ポイント
クロムまたはエッジをブラザーとして使用することをお薦めします。また、ブラウザのズームを80%に設定します。
-
Mac OSユーザーは、ctrl+C / ctrl+Vを使用して、OCIコンソール内にコピーして貼り付ける必要があります。
-
ログイン資格証明は、ガイドの後半で提供されます(スクロール・ダウン)。すべてのユーザーがこれらの資格証明を手元に保持する必要があります。
ノート:スクリーンショットは実際のUIとは異なる場合があります。
前提条件
-
Oracle Cloud Infrastructureアカウント資格証明(ユーザー、パスワード、テナントおよびコンパートメント)。
OCIコンソールにサインインして、オブジェクト・ストレージ・バケットとVCNを作成します
-
クラウド・テナント名、ユーザー名およびパスワードを使用して、Oracle Cloud Infrastructureコンソールにサインインします。
-
「OCIサービス」メニューから、「オブジェクト・ストレージ」をクリックします。
-
左側のナビゲーション・ペインの「リスト・スコープ」でコンパートメントを選択します。
-
「バケットの作成」をクリックし、ダイアログ・ボックスに入力します:
- バケット名:名前を指定します
- ストレージ層:標準
- 暗号化: ENCRYPT USING ORACLE-MANAGED KEYS
-
「バケットの作成」をクリックします。
-
ツールバーの「Apps」アイコンをクリックし、「Git-Bash」を選択します。
または、端末ウィンドウを開き、Gitコマンドを実行します。
-
ディレクトリを「ダウンロード」フォルダに変更します。コマンドの入力:
$ cd /c/Users/PhotonUser/Downloads/
-
サンプル・ファイルを作成します。コマンドの入力:
touch samplefile
「ダウンロード」フォルダに"samplefile"という名前のファイルを作成します。
-
OCIコンソール・ウィンドウに切り替えて、バケット名をクリックします。
ヒント: 「ウィンドウの切替え」をクリックすると、OCIコンソール・ウィンドウと他のアプリケーション(git-bashなど)を切り替えることができます。
-
バケットの詳細ウィンドウが表示されます。「オブジェクトのアップロード」をクリックします。
-
「オブジェクトのアップロード」をクリックします。ダイアログ・ボックスに入力します。
- OBJECT NAME PREFIX:接頭辞を指定します(オプション)
- あなたの会社からのCHOSEファイル: 「ファイルの選択」をクリックし、「サンプル・ファイル」が作成された場所を参照します。
-
ファイルを選択し、ダイアログ・ボックスで「オブジェクトのアップロード」をクリックします。
ファイルは「オブジェクト」の下に表示されます。
-
「OCIサービス」メニューから、「ネットワーキング」の下の「仮想クラウド・ネットワーク」をクリックします。
「ネットワーキング」の下の画面左側のドロップダウン・メニューからコンパートメントを選択し、「VCNウィザードの起動」をクリックします。
ノート:「コンパートメント」リストで正しいコンパートメントが選択されていることを確認します。
-
「インターネット接続性を持つVCN」をクリックし、「ワークフローの開始」をクリックします。
-
ダイアログ・ボックスに入力し、「次へ」をクリックします。
- VCN名:名前を指定します
- COMPARTMENT:自分のコンパートメントが選択されていることを確認してください
- VCN CIDR BLOCK: CIDRブロック(10.0.0.0/16)を指定します
- PUBLIC SUBNET CIDR BLOCK: CIDRブロックを指定します(10.0.1.0/24)
- プライベート・サブネットCIDRブロック: CIDRブロックを指定します(10.0.2.0/24)
-
すべての情報を確認して、「作成」をクリックします。
これにより、VCN、パブリック・サブネット、プライベート・サブネット、インターネット・ゲートウェイ(IG)、NATゲートウェイ(NAT)、サービス・ゲートウェイ(SG)の各コンポーネントを含むVCNが作成されます。
-
VCNの詳細を表示するには、「仮想クラウド・ネットワークの表示」をクリックします。
-
「サブネットの作成」をクリックします。ダイアログ・ボックスに入力します。
- 名前:名前を入力します
- サブネット・タイプ:リージョン
- CIDRブロック: 10.0.5.0/24と入力します
- ルート表:デフォルト・ルート表を選択します
ノート:本番デプロイメントでは、個別のルート表を作成することを強くお薦めします。
- サブネット・アクセス:「プライベート・サブネット」を選択します
- DHCPオプション:デフォルトを選択します
- セキュリティ・リスト:「デフォルト・セキュリティ・リスト」を選択します
ノート:本番デプロイメントでは、個別のセキュリティ・リストを作成することを強くお薦めします。
-
その他のオプションはデフォルトのままにし、「サブネットの作成」をクリックします。
SSHキーの作成、OCI CLIを事前インストールした2つのコンピュート・インスタンスの作成
-
ツールバーの「Apps」アイコンをクリックし、「Git-Bash」を選択します。
または、端末ウィンドウを開き、Gitコマンドを実行します。
-
コマンドの入力:
ssh-keygen
ヒント:「ウィンドウの切替え」アイコンをクリックして、OCIコンソール・ウィンドウ、git-bashセッションおよびその他のアプリケーション(メモ帳など)とスワップできます。
-
キーを保存するファイルの入力を求められたら、[Enter]を押して、キーを保存する「作成ディレクトリ」、「パスフレーズの入力」および「パスフレーズの入力」を再度入力します。
-
これで、公開鍵と秘密鍵が表示されます。
/C/Users/ PhotonUser/.ssh/id_rsa
(秘密キー)/C/Users/PhotonUser/.ssh/id_rsa.pub
(公開キー)ノート:
id_rsa.pub
を使用してコンピュート・インスタンスを作成し、id_rsa
を使用してSSHを介してコンピュート・インスタンスに接続します。ヒント:次のコマンドを入力します。
cd /C/Users/PhotonUser/.ssh (No Spaces)
次に:
ls
2つのファイルが存在することを検証します。
-
git-bashで、次のコマンドを入力します。
cat /C/Users/PhotonUser/.ssh/id_rsa.pub
キーを強調表示してコピーします。
-
「Apps」アイコンをクリックし、メモ帳を起動し、バックアップとしてメモ帳にキーを貼り付けます。
-
OCIコンソールに切り替えます。「OCIサービス」メニューから、「コンピュート」の下の「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。ダイアログ・ボックスに入力します。
-
インスタンスの名前:名前を入力します
-
オペレーティング・システムまたはイメージ・ソースの選択: 「イメージ・ソースの変更」をクリックします。新しいウィンドウで、「Oracleイメージ」をクリックし、「Oracle Cloud Developer Image」を選択します。下にスクロールして契約に同意し、「イメージの選択」をクリックします。
-
可用性ドメイン:可用性ドメインを選択します
-
インスタンス・タイプ:「仮想マシン」を選択します
-
インスタンス・シェイプ: VMシェイプを選択します
「Configure Networking」の下
-
仮想クラウド・ネットワーク・コンパートメント:コンパートメントを選択します
-
仮想クラウド・ネットワーク: VCNを選択します
-
サブネット・コンパートメント:コンパートメントを選択します
-
サブネット: 「パブリック・サブネット」の下のパブリック・サブネットを選択します
-
ネットワーク・セキュリティ・グループを使用してトラフィックを制御:選択を解除したままにします
-
パブリックIPアドレスの割当て:このオプションを選択します
-
ブート・ボリューム:デフォルトのままにします
-
SSHキーの追加:「SSHキーの貼付け」を選択し、以前に保存した公開キーを貼り付けます。
-
-
「作成」をクリックする。
-
コンピュート・インスタンスのパブリックIPアドレスを書き留めます。
-
事前に概説されたステップに従って、2番目のコンピュート・インスタンスを作成します。「コンピュート」の下の「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。ダイアログ・ボックスに入力します。
-
名前:名前を入力します
-
Image Operating System: 「Change Image Source」をクリックします。新しいウィンドウで、「Oracleイメージ」をクリックし、「Oracle Cloud Developer Image」を選択します。下にスクロールして契約に同意し、「イメージの選択」をクリックします。
-
可用性ドメイン:可用性ドメインを選択します
-
インスタンス・タイプ:「仮想マシン」を選択します
-
インスタンス・シェイプ: VMシェイプを選択します
「Configure Networking」の下
- 仮想クラウド・ネットワーク・コンパートメント:コンパートメントを選択します
- 仮想クラウド・ネットワーク: VCNを選択します
- サブネット・コンパートメント:コンパートメントを選択します
- サブネット: 「プライベート・サブネット」の下のプライベート・サブネットを選択します
- ネットワーク・セキュリティ・グループを使用してトラフィックを制御:選択を解除したままにします
- ブート・ボリューム:デフォルトのままにします
- SSHキーの追加:「SSHキーの貼付け」を選択し、以前に保存した公開キーを貼り付けます
-
-
「作成」をクリックする。
ノート:「サービス制限」エラーが表示された場合は、VM.Standard.E2.2またはVM.Standard2.2などの別のシェイプを選択します。
-
インスタンスが実行状態になったら、「インスタンス名」をクリックし、そのプライベートIPアドレスをノートにとります。
-
プライベート・インスタンスにSSH接続するには、SSHプロキシ・コマンドを使用します。このコマンドを使用すると、要塞ホストを介してプライベート・インスタンスにトンネリングできます。
プライベートSSHキーを要塞ホスト(最初のコンピュート・インスタンス)などのパブリック・サーバーに格納することはお薦めしません。
-
最初のコンピュートのパブリックIPと2番目のコンピュートのプライベートIPの両方があることを確認します。git-bashウィンドウで、/C/Users/PhotonUser/.sshディレクトリにいることを確認します。コマンドの入力:
bash ssh -t -o ProxyCommand='ssh -i <SSH_Private_Key_Name> opc@<FIRST_COMPUTE_PUBLIC_IP> -W %h:%p %r' -i <SSH_Private_Key_Name> opc@<SECOND_COMPUTE_PRIVATE_IP>
-
セキュリティ・プロンプトで「Yes」と入力します。
-
oci CLIのインストール・バージョンを確認します。コマンドの入力:
oci -v
ノート:バージョンは2.4.2X以上である必要があります。
-
次に、OCI CLIを構成します。コマンドの入力:
oci setup config
-
デフォルトのディレクトリの場所を受け入れます。
ユーザーOCIの場合は、OCIコンソール・ウィンドウに切り替えます。「Human」アイコンをクリックし、ユーザー名をクリックします。ユーザーの詳細ページで、「コピー」をクリックしてOCIDをコピーします。また、OCIコンソール・ウィンドウに表示されるように、リージョン名をノートにとります。SSHセッションでOCIDを貼り付けます。
-
ステップを繰り返して、テナンシOCIDを検索します(ヒューマン・アイコンに続いてテナンシ名をクリックします)。SSHセッションのテナンシOCIDをコンピュート・インスタンスに貼り付け、続けてリージョン名(us-ashburn-1、us-phoneix-1など)を指定します。
-
新しいRSAキー・ペアを生成しますか。、Yと回答します。残りの質問については、[Enter]を押してデフォルトを受け入れます。
APIキーのアップロードと機能の検証
-
oci setup configもAPIキーを生成しました。APIコールの認証のために、このAPIキーをOCIアカウントにアップロードする必要があります。SSHセッションに切り替えて、APIキーの内容を表示します。コマンドの入力:
cat ~/.oci/oci_api_key_public.pem
-
SSHセッションからコンテンツを強調表示してコピーします。OCIコンソールに切り替えて、「Human」アイコンに続けてユーザー名をクリックします。ユーザーの詳細ページで、「公開キーの追加」をクリックします。ダイヤル・ボックスで、公開キー・コンテンツを貼り付け、「追加」をクリックします。
-
新しい指紋が生成されます。git-bashウィンドウに切り替えて、次のコマンドを入力します。
cat /home/opc/.oci/config
構成ファイルの出力にある指紋をOCIコンソール・ウィンドウの指紋と比較し、一致していることを確認します。
今度はオブジェクトをオブジェクト・ストレージにアップロードし、2番目のコンピュート・インスタンスからアクセスします。このダウンロードでは、コンピュート・インスタンスのパブリックIPが使用されます。
-
OCIコンソール・ウィンドウに戻り、オブジェクト・ストレージ・バケットの詳細ページに移動します。名前空間とオブジェクト・ストレージ名を書き留めます。
-
git-bashウィンドウ(2番目のコンピュート・インスタンスへのSSHセッション)に切り替えて、samplefileをダウンロードします。コマンドの入力:
`bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./
ヒント:この例では、コマンドは次のようになります:
oci os object get --namespace us_training --bucket-name
Service-Gateway-Bucket --name samplefile --file ./samplefile
-
出力が表示されず、ファイルはダウンロードされません。Ctrl+Cと入力してコマンドを終了します。コマンドの入力:
ls
サンプルファイルがダウンロードされていないことを確認します。
2番目のコンピュート・インスタンスにはパブリックIPがないため、オブジェクト・ストレージにアクセスできません。次に、ルート表を初期化し、ファイルを再度ダウンロードします。
-
OCIコンソールに切り替えます。「OCIサービス」メニューから、「ネットワーキング」の下の「仮想クラウド・ネットワーク」をクリックします。VCNを検索し、VCN名をクリックしてVCNの詳細を表示します。
-
「ルート表」をクリックし、「
<VCN_NAME>
のデフォルト・ルート表」をクリックします。 -
「ルート・ルールの追加」をクリックします。ダイアログ・ボックスに入力します。
- TARGET TYPE:サービス・ゲートウェイ
- 宛先サービス: OCI IAD - ObjectStorage
- COMPARTMENT:コンパートメントを選択します
- TARGET SERVICE GATEWAY:以前に作成したサービス・ゲートウェイを選択します
-
「ルート・ルールの追加」をクリックします。新しいルート・エントリを作成する必要があります。
-
VCNで、「セキュリティ・リスト」、「
<VCN_NAME>
のデフォルト・セキュリティ・リスト」の順にクリックします。「エグレス・ルールの追加」をクリックします。 -
次のエグレス・ルールを追加します。STATELESSフラグを未チェックのままにしてください。
- DESTINATION TYPE:サービス
- 宛先サービス: OCI IAD Object Storage
- ソース・ポート範囲:すべて
- 宛先ポート範囲: ALL
-
「エグレス・ルールの追加」をクリックします。
-
git-bashウィンドウ(2番目のコンピュート・インスタンスへのSSHを使用)に切り替えます。
-
ダウンロード・コマンドを再入力します。
bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./
サービス・ゲートウェイを使用すると、コンピュート・インスタンスはObject Storageに格納されたObjectにアクセスできました。これは、パブリック・インターネットではなくOCIのプライベート・バックボーン・ネットワークを使用して行われました。
リソースの削除
実際には、リソースの削除中に発生したエラーを特定する必要があります。
-
OCIコンソール・ウィンドウに切り替えます。
-
コンピュート・インスタンスが表示されない場合は、「OCIサービス」メニューから「コンピュート」の下の「インスタンス」をクリックします。
-
コンピュート・インスタンスを見つけて、「アクション」アイコンをクリックし、「終了」をクリックします。
-
「アタッチされたブート・ボリュームを完全に削除」が選択されていることを確認し、「インスタンスの終了」をクリックします。インスタンスが完全に終了するまで待機します。
-
この手順を繰り返して、2番目のコンピュート・インスタンスを削除します。
-
「OCIサービス」メニューから、「ネットワーキング」の下の「仮想クラウド・ネットワーク」をクリックします。
すべてのVCNのリストが表示されます。
-
VCNを見つけて「アクション」アイコンをクリックし、「終了」をクリックします。確認ウィンドウで「すべて削除」をクリックします。VCNが削除されたら、「閉じる」をクリックします。
-
「OCIサービス」メニューから、OBject Storageに移動します。バケット名をクリックします。「オブジェクト」で、ファイルが表示されます。「アクション」アイコン(縦の3つのドット)をクリックし、「削除」をクリックしてオブジェクトを削除します。
-
オブジェクトが削除されたら、「削除」をクリックしてバケットを削除します。
謝辞
- 著者 - Flavio Pereira、 Larry Beausoleil
- コントリビュータ - Yaisah Granillo (クラウド・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。