概要
オンプレミスの閉域環境から AWS のリソースへアクセスしたいが、長期的なアクセスキーの配布は避けたい。このような要件は、セキュリティ要件の高い環境や外部接続が制限された環境では一般的に求められます。オンプレミスのサーバーを AWS Systems Manager(SSM)の管理下に置く「ハイブリッドアクティベーション」を利用することで、オンプレミス環境にいながら IAM ロールによる一時的な認証情報を用いて AWS CLI を実行し、S3 などのリソースへ安全にアクセスできるようになります。
本記事では、セキュリティガバナンスを保ちつつ、閉域環境から AWS リソースを操作するための具体的な導入手順について解説します。
想定構成と全体像
本記事で扱う構成は、以下のようなイメージです。
- オンプレミス(閉域)環境の Windows サーバー
- AWS Direct Connect などを介して VPC と接続
- 名前解決:Route 53 Resolver インバウンドエンドポイントを利用
- 管理状態:オンプレミスサーバーを SSM のマネージドノードとして登録
- 認証:SSM Agent が IAM ロールを用いて一時的な認証情報を取得し、ローカルにキャッシュ
本構成では、ハイブリッドアクティベーションの作成時に IAM ロールを関連付けます。
この IAM ロールに S3 などのアクセス権限を付与しておくことで、オンプレミスサーバーは長期的なアクセスキーを保持することなく、一時的な認証情報を利用して AWS リソースへアクセスできるようになります。

ハイブリッドアクティベーションとは?
ハイブリッドアクティベーションは、EC2 以外のサーバー(オンプレミス環境など)を Systems Manager の管理下に置く仕組みです。
これにより、オンプレミスサーバーでも以下が可能になります。
- SSM Run Command の実行
- Session Manager によるリモート操作
- IAM ロールベースの一時認証情報の利用
- AWS CLI を使った AWS サービスアクセス
ハイブリッドアクティベーションの作成
Systems Manager コンソールからハイブリッドアクティベーションを作成します。

作成時には IAM ロールを関連付けておく必要があります。
今回、IAM ロールには、以下のポリシーを付与します。
- AmazonSSMManagedInstanceCore
- S3 へのアクセス権限
オンプレミスサーバーは、この IAM ロールを利用して一時的な認証情報を取得し、AWS CLI から S3 へアクセスします。
作成後は、Activation Code / Activation ID が発行されます。

DNS フォワーダーの設定 & VPC エンドポイント
オンプレミス環境から AWS のエンドポイントを名前解決できるよう、オンプレ環境の DNS サーバーにフォワーダー設定を行います。
DNS フォワーダー
amazonaws.com
aws.amazon.com
※ Resolver 側のセキュリティグループで TCP / UDP 53 を許可
VPC エンドポイント
com.amazonaws.ap-northeast-1.ssm
com.amazonaws.ap-northeast-1.ssmmessages
com.amazonaws.ap-northeast-1.s3
com.amazonaws.ap-northeast-1.ec2messages
SSM Agent のインストールとアクティベーション(Windows)
[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$code = "YOUR_ACTIVATION_CODE"
$id = "YOUR_ACTIVATION_ID"
$region = "ap-northeast-1"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile(
"https://amazon-ssm-$region.s3.$region.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe",
"$dir\AmazonSSMAgentSetup.exe"
)
Start-Process .\AmazonSSMAgentSetup.exe `
-ArgumentList @("/q","/log","install.log","CODE=$code","ID=$id","REGION=$region") `
-Wait
Get-Service -Name AmazonSSMAgent
AWS CLI のインストール
閉域環境の場合は、インターネット接続可能な端末で AWSCLIV2.msi をダウンロードし、
閉域環境へ持ち込んで実行します。
msiexec.exe /i AWSCLIV2.msi
SSM Agent の一時認証情報を AWS CLI から利用する
ハイブリッドアクティベーションされたサーバーでは、SSM Agent が SYSTEM ユーザーとして動作し、
以下のパスに一時的な認証情報を保存します。
C:\Windows\System32\config\systemprofile\.aws\credentials
config ファイル
C:\Windows\System32\config\systemprofile\.aws\config [default] region = ap-northeast-1
環境変数設定
[Environment]::SetEnvironmentVariable( "AWS_SHARED_CREDENTIALS_FILE", "C:\Windows\System32\config\systemprofile\.aws\credentials", "Machine" ) [Environment]::SetEnvironmentVariable( "AWS_CONFIG_FILE", "C:\Windows\System32\config\systemprofile\.aws\config", "Machine" )
PowerShell を再起動します。
S3 アクセス確認
aws s3 ls
aws s3 cp test.txt s3://<バケット名>//test.txt aws s3 ls s3://<バケット名>/ / aws s3 cp s3://<バケット名>/ /test.txt ./test2.txt
まとめ
ハイブリッドアクティベーションを活用することで、オンプレミスサーバーでも IAM ロールによる一時認証情報を利用できます。
長期的なアクセスキーを管理する必要がなくなり、閉域環境においてもセキュアな AWS 利用が可能になります。
閉域環境から AWS へアクセスする際の選択肢として、ハイブリッドアクティベーションは非常に有効な手段です。