{IAM}ウェブ ID フェデレーション

https://qiita.com/hyj624117615/items/ca4a8bc8c269098aaeef

作業端末: macOS 12.4


-- 1. 準備作業【AWS

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
which aws
aws --version

 


-- 2. 準備作業【GCP

curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-401.0.0-darwin-x86_64.tar.gz -o google-cloud-cli-401.0.0-darwin-x86_64.tar.gz
tar xvzf google-cloud-cli-401.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh
./google-cloud-sdk/bin/gcloud init
gcloud --version


gcloud init

gcloud auth list

 

-- 3. プロジェクト、サービスアカウント、VMインスタンスの作成【GCP

-- 3.1 プロジェクトの作成

gcloud projects list


gcloud projects create project1111111111 \
--name="project1111111111"

gcloud projects describe project1111111111

-- 3.2 プロジェクトを請求先アカウントに紐づける(GUIから実施)

-- 3.3 プロジェクト設定

gcloud config list
gcloud config set project project1111111111
gcloud config list

-- 3.4 Compute Engineの有効化

gcloud services enable compute.googleapis.com

-- 3.5 サービスアカウント作成

gcloud iam service-accounts create sa0001 --display-name="sa0001"
gcloud iam service-accounts list
gcloud iam service-accounts describe sa0001@project1111111111.iam.gserviceaccount.com


-- 3.6 VMインスタンス作成


gcloud compute instances list


gcloud compute instances create instance-1 \
--project=project1111111111 \
--zone=asia-northeast1-a \
--machine-type=e2-micro \
--network-interface=network-tier=PREMIUM,subnet=default \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--service-account=sa0001@project1111111111.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--create-disk=auto-delete=yes,boot=yes,device-name=instance-1,image=projects/centos-cloud/global/images/centos-7-v20220920,mode=rw,size=20,type=projects/project1111111111/zones/asia-northeast1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any


-- 3.7 ミドルウェア等をVMインスタンスにインストール
VMインスタンスにログインして実施

gcloud compute ssh --zone "asia-northeast1-a" "instance-1"  --project "project1111111111"

 

sudo yum install -y python3-pip
sudo yum install unzip -y
curl -L -o gcp-to-aws.zip https://github.com/cevoaustralia/gcp-sa-to-aws-iam-role/archive/master.zip
unzip gcp-to-aws.zip
cd gcp-sa-to-aws-iam-role-master/gcp
sudo pip3 install -r requirements.txt

aws --version

cd ~
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

 


-- 4. ロール作成【AWS

-- 4.1 ロールの作成
※"accounts.google.com:aud"にはGCPVMインスタンスに指定したサービスアカウントのuniqueIdを指定する

vim role01.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "accounts.google.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:aud": "222222222222222222222"
                }
            }
        }
    ]
}

 

aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json

-- 4.2 ポリシーをロールにアタッチ

aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--role-name role01

 

 

-- 5. 動作確認【GCP
VMインスタンスにログインして実施

gcloud compute ssh --zone "asia-northeast1-a" "instance-1"  --project "project1111111111"

cd ~/gcp-sa-to-aws-iam-role-master/gcp
ll
cat get_aws_creds.py 


./get_aws_creds.py arn:aws:iam::999999999999:role/role01

 

aws sts get-caller-identity
cat ~/.aws/credentials 

 

export AWS_DEFAULT_REGION=ap-northeast-1

aws s3 ls 
aws s3 mb s3://bucket123
aws s3 ls 
aws s3 rb s3://bucket123 --force
aws s3 ls 


-- 6. クリーンアップ【GCP

-- プロジェクト削除

gcloud projects list

gcloud projects delete project1111111111


-- 7. クリーンアップ【AWS

-- ロールの削除
aws iam list-roles | grep role01

aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess


aws iam delete-role --role-name role01