VPC内のDBアクセスするため踏み台(BASTION)サーバをawscliで用意

VPC内のDBアクセスするため踏み台(BASTION)サーバをawscliで用意:

こちらの資料を参考しながらこの手順を用意しました。
https://docs.aws.amazon.com/quickstart/latest/linux-bastion/

  1. keypair 用意
ないなら、EC2へアクセスできるようにKeyPairを作成します。

aws ec2 create-key-pair --key-name bastion-keypair --region ap-northeast-1 
ローカルでPrivate Key bastion.pemを用意

vi ~/.ssh/bastion.pem 
{上記で出力されたPRIVATE KEY情報をファイルに書き込む} 
 
# ファイル権限更新 
sudo chmod 400 ~/.ssh/bastion.pem 
  1. Bastion用のSecurity Groupを作成
# Create security group 
aws ec2 create-security-group --group-name bastion-sg --vpc-id {使用するVPCID} --description "security group for basition instance(s) for acting as a intermediate jump of point for rds acccess" 
 
# Add authorization for ssh(port 22) to ingress 
aws ec2 authorize-security-group-ingress \ 
    --group-id $(aws ec2 describe-security-groups --query 'SecurityGroups[?GroupName==`bastion-sg`].GroupId' --output text) \ 
    --protocol tcp \ 
    --port 22 \ 
    --cidr "0.0.0.0/0" 
注意:CIDRを適切なIPで絞るべき
  1. SSHアクセスを許可


    aws ec2 authorize-security-group-ingress \

    --group-id $(aws ec2 describe-security-groups --query 'SecurityGroups[?GroupName==`bastion-sg`].GroupId' --output text) \

    --protocol tcp \

    --port 22 \

    --cidr "0.0.0.0/0"
  2. 現状のRDS Security Groupとの通信を許可
export EXISTING_RDS_SECURITY_GROUPID={RDS Security Group ID } 
aws ec2 authorize-security-group-ingress --group-id ${EXISTING_RDS_SECURITY_GROUPID} \ 
    --protocol tcp \ 
    --port 5432 \ 
    --cidr "0.0.0.0/0" \ 
    --source-group $(aws ec2 describe-security-groups --query 'SecurityGroups[?starts_with(GroupName, `bastion-sg`)].GroupId' --output text) 
  1. 踏み台用のEC2を作成
ami-0f63c02167ca94956: Ubuntu 18.04 LTS
aws ec2 run-instances --image-id ami-0f63c02167ca94956 --count 1 --instance-type t2.micro --key-name bastion-keypair --security-group-ids $(aws ec2 describe-security-groups --query 'SecurityGroups[?starts_with(GroupName, `bastion-sg`)].GroupId' --output text) --subnet-id {PUBLIC SUBNET ID} --associate-public-ip-address 
 
# 出たインスタンスIDを使って、用意されるまで待つ 
aws ec2 wait instance-status-ok --instance-ids {INSTANCE ID} 
  1. SSHで踏み台(BASTION)サーバへアクセスして、DBに接続します。
# IPを取得 
aws ec2 describe-instances   --query "Reservations[*].Instances[*].PublicIpAddress"   --output=text 
 
ssh -i ~/.ssh/bastion.pem ubuntu@{IP ADDRESS} 


SSHで踏み台(BASTION)サーバにインストールしたいライブラリー・ツール

# Pythonツール系インストールできるように準備 
sudo apt update 
sudo apt install python3-distutils 
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 
sudo python3 get-pip.py  
sudo apt install build-essential 
 
# python headersを取得(パッケージをビルド時に使用される) 
sudo apt install python3-dev 
 
# DBへ接続確認ために 
sudo python3 -m pip install pgcli 


SSH Tunnelにより、同じPCにDBがあるように接続する

  • Committing deleted app
  • 自分のPCからTunnel貼る:
postgresqlを使用例
# LOCAL_PORT:REMOTE_ADDRESS:REMOTE_PORT 
ssh -nNT -L 5432:{VPC内のRDSIPADDRESS}:5432 -i ~/.ssh/bastion.pem ubuntu@{IP ADDRESS} & 
  1. 自分のPCからDBにへ接続:
pgcli postgresに接続できる簡易CLI
pgcli -h 127.0.0.1 -p 5433 -d annotation_tool -U readonly -W 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)