0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】閉域網(Direct Connect)環境におけるIAM Roles Anywhere + S3接続設定

0
Last updated at Posted at 2025-12-21

1. 作業背景・目的

Direct Connectで接続されたインターネット利用不可のWindows Server(オンプレミス)からS3バケットへの操作を行う必要が出てきた。
暗号化が必須な点やsftpが使えない環境のため、IAM Roles Anywhereで実現することにした。

【IAM Roles Anywhere説明画像】
1003321647.jpg

【今回の構成】
1003321649.jpg

2. 環境構成

  • クライアントOS: Windows Server
  • ネットワーク: AWS Direct Connect (閉域網・インターネット接続なし)
  • 認証方式: IAM Roles Anywhere + AWS Private CA
  • 操作対象: Amazon S3
  • 使用ツール: AWS CLI v2, aws_signing_helper

3. インフラ準備 (VPCエンドポイント)

閉域網からのアクセスのため、以下の2つのInterface型VPCエンドポイント(VPCE)を作成した。

用途 サービス名 設定のポイント
認証用 com.amazonaws.ap-northeast-1.rolesanywhere SGでHTTPS(443)許可。DNS名は後で使用するため控えておく。
S3アクセス用 com.amazonaws.ap-northeast-1.s3 オンプレからの接続のため、Gateway型ではなくInterface型を使用すること。SGでHTTPS(443)許可。

4. AWS側設定 (IAM Roles Anywhere & Private CA)

  1. Private CA: クライアント証明書発行用のCAを準備。
  2. トラストアンカー: IAM Roles Anywhereにて、上記Private CAを信頼する設定を作成。
  3. IAMロール: 信頼関係ポリシーで rolesanywhere.amazonaws.com からのAssumeRoleを許可。
"Condition": { "ArnEquals": { "aws:SourceArn": "<トラストアンカーARN>" } }
  1. プロファイル: 作成したロールをIAM Roles Anywhereプロファイルに関連付け。

5. クライアント作業ログ (証明書発行〜設定)

手順⓪:作業用ディレクトリの準備とツールの配置

任意のフォルダ(例: C:\work)を作成し、事前に入手した aws_signing_helper.exe を配置する。
以降の作業は、コマンドプロンプトでこのディレクトリに移動して行う。

mkdir C:\work
cd C:\work

手順①:秘密鍵とCSRの作成 (OpenSSL)

同ディレクトリ(C:\work)でOpenSSLを実行し、鍵とCSRを生成する。

openssl genrsa -out private-key.pem 2048
openssl req -new -key private-key.pem -out csr.pem

手順②:証明書の発行 (AWS CLI)

作業端末からAWS Private CAへ署名リクエストを送信。

署名リクエスト:

aws acm-pca issue-certificate ^
    --certificate-authority-arn <Private CA ARN> ^
    --csr fileb://csr.pem ^
    --signing-algorithm SHA256WITHRSA ^
    --validity Value=365,Type=DAYS ^
    --idempotency-token 1234

※実行後、出力される CertificateArn を控える。

証明書の取得と保存:
--query オプションで証明書本文のみを抽出し、同ディレクトリに保存する。

aws acm-pca get-certificate ^
    --certificate-authority-arn <Private CA ARN> ^
    --certificate-arn <発行されたCertificate ARN> ^
    --output text --query Certificate > cert.pem

手順③:疎通確認(コマンド手打ち)

まずはコマンドで検証。

認証(クレデンシャル取得)テスト:

  • 配置した証明書とキー (C:\work\...) を指定する。
  • 認証用VPCEのエンドポイントを --endpoint で指定。
  • プロトコル https:// を忘れないこと。
aws_signing_helper credential-process ^
    --certificate C:\work\cert.pem ^
    --private-key C:\work\private-key.pem ^
    --trust-anchor-arn <TrustAnchorARN> --profile-arn <ProfileARN> --role-arn <RoleARN> ^
    --endpoint https://vpce-auth-xxxx.rolesanywhere.ap-northeast-1.vpce.amazonaws.com

S3アクセス(リスト取得)テスト:

  • 環境変数 (AWS_ACCESS_KEY_ID 等) に一時キーをセットして実行。
  • S3用VPCEの指定形式に注意。bucket. を付けないとSSLエラーになる。
aws s3 ls --region ap-northeast-1 --endpoint-url https://bucket.vpce-s3-xxxx.s3.ap-northeast-1.vpce.amazonaws.com

手順④:AWS CLI Config設定 (~/.aws/config)

検証済みの値を設定ファイルに記述。credential_process 内のファイルパスはフルパス(C:\work\...)で記述しておくと確実。

設定ファイルのポイント:

  • credential_process は改行しない。
  • S3用エンドポイントは [services] セクションで定義し、bucket. プレフィックス付きURLを指定する。

最終的な config:

[profile rolesanywhere]
region = ap-northeast-1
credential_process = C:\work\aws_signing_helper.exe credential-process --certificate C:\work\cert.pem --private-key C:\work\private-key.pem --trust-anchor-arn <TrustAnchorARN> --profile-arn <ProfileARN> --role-arn <RoleARN> --endpoint https://vpce-auth-xxxx.rolesanywhere.ap-northeast-1.vpce.amazonaws.com
services = s3-private

[services s3-private]
s3 =
    endpoint_url = https://bucket.vpce-s3-xxxx.s3.ap-northeast-1.vpce.amazonaws.com

6. トラブルシューティング・メモ

  • i/o timeout: 認証時にパブリックエンドポイントへ行こうとしている。credential_process--endpoint でRoles Anywhere用VPCEを指定して解決。
  • hostname mismatch (SSL Error): S3アクセス時にワイルドカード(*.vpce...)やバケット名直書き(bucketname.vpce...)のエンドポイントを指定すると発生。bucket.vpce... の形式に統一して解決。
  • unknown command: config ファイル内でコマンドを見やすくするために改行を入れたら発生。1行で書くのが鉄則。
  • unsupported protocol scheme "": エンドポイントURLに https:// を付け忘れて発生。

7. 確認コマンド

aws s3 ls --profile rolesanywhere

追記(1/17)

証明書や鍵の文字コードの関係でエラーが発生する可能性がある
使用している環境だとUTF-8の必要があったため、同じ作業のときは念頭に置いておく。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?