🌟

IPアドレス制限のあるAmazon S3バケットからCloud Storageへデータを転送する

2023/06/23に公開

はじめに

こんにちは、クラウドエースのデータ ML ディビジョン所属の児島です。

クラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータML ディビジョンになります。

データML ディビジョンでは活動の一環として、毎週 Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。

今回紹介するリリースは「Storage Transfer Serviceのワーカーが用いるIPアドレス範囲が公表された」というものです。
これにより、Amazon S3やMicrosoft Azure Storageにおいて、バケットのポリシーによって接続できるIPアドレスが制限されているバケット内のオブジェクトをStorage Transfer Serviceを用いてCloud Storageへ転送できるようになりました。

Cloud Storage Transfer Serviceの概要

Google Cloud Storage、Amazon S3、Azure Storage、オンプレミス データなどのストレージ システム間で自動的にデータ転送を行うサービスで、コードを書くことなく利用できるサービスになります。

リリース内容

今回ご紹介するリリースは2023年4月25日付で発表されたStorage Transfer Serviceにおける、同サービスが使用するIPアドレス範囲が公表された、という内容についてです。

該当リリース記事はこちらです。

また、公表されたワーカーのIPアドレス範囲はこちらです。

このリリース以前もAmazon S3をはじめ、Google Cloudのサービス外のストレージとCloud Storageの間でStorage Transfer Serviceを利用してデータの転送を行うことは可能でした。
しかし、各ファイルサービスでIPアドレスによってファイルへのアクセスを制限している場合、Storage Transfer Serviceのワーカーが使用するIPアドレスが不明であったため、データ転送を行うことができませんでした。
後ほど紹介いたしますように、例えばAmazon S3のバケットポリシーでアクセスできるIP範囲が指定、制限されている場合、今回公表されたStorage Transfer Serviceのワーカーが使用するIP範囲をバケットポリシーのホワイトリストに加えることでStorage Transfer ServiceがS3バケットにアクセスできるようになり、データの転送が可能となります。

なお、Storage Transfer Serviceの公式ドキュメント によると、公表されているワーカーのIPアドレス範囲は変更される場合があり、週に一度ほどの間隔でアドレスを確認することを推奨しています。

確認してみた

概要

Storage Transfer Serviceで新規ジョブを作成します。

今回はIP範囲によってアクセスを制限しているAmazon S3バケットからCloud Storageバケットへとファイルの転送を行います。

その際、公表されているワーカーのIPアドレス範囲をAmazon S3バケットのバケットポリシーに追記します。

手順

まず、S3側の準備から行います。

対象のバケットを選択し、「アクセス許可」のタブを選択します。

AWS001.jpeg

バケットポリシーにStorage Transfer ServiceのワーカーのIP範囲を記載します。

なお、バケットポリシーでIP範囲を制限する際、AWS外部のサービスが使用するアドレスの指定は"aws:SourceIp":"外部サービスの使用するIP範囲"のような記載方法で指定します。

S3のバケットポリシーの一例です。

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::バケット名",
                "arn:aws:s3:::バケット名/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "74.125.38.0/24",
                        "142.250.216.0/24",
                        "自社環境のIP範囲"
                    ]
                }
            }
        }
    ]
}

上記のポリシーで指定しているIPアドレス範囲は本記事執筆時点(2023年6月)でのStorage Transfer Serviceのワーカーが使用するIP範囲です。

次にGCP側の準備を行います。

Storage Transfer Serviceの転送ジョブを作成します。
今回はS3バケット内のファイルをCloud Storageに転送するため、参照元の種類をAmazon S3、宛先の種類をCloud Storageに指定します。
本記事では検証用にジョブを作成するので、スケジュールモードはバッチを選択します。

gc001.jpeg

次にソースの選択を行います。
ここでは、取得元のバケット名を指定します。
また、AWSの認証方法を選択します。
認証方法はAWSで普段使用しているものに従えば良いかと思いますが、ここではアクセスキーを使用します。
アクセスキーを忘れてしまった場合でも、UI上のリンク先から再度作成できます。

gc002.png

次に移動先のバケットを指定します。

GC003.png

次にジョブの実行タイミングを指定します。
開始日の指定ができますが、ここでは今すぐ開始にしています。

GC004.png

最後にオプションを指定します。
ジョブを追跡するためのコメントやCloud Storageに転送した後のストレージクラス、同名のファイルが宛先バケットに存在した場合に上書きするかどうかなどの指定ができます。
ここではコメントだけ指定し、他のオプションはデフォルトのまま実行します。

GC005.png

このまま作成ボタンを押すとジョブが実行されます。

GC006.png

まとめ

今回、Storage Transfer ServiceのワーカーのIPアドレスが公開されたリリースをご紹介しました。

このリリースによってセキュリティの厳しい他社サービスやオンプレミス環境と簡単にデータのやりとりを行う際の利便性が向上しました。

Discussion