LoginSignup
1
0

More than 5 years have passed since last update.

AWS IAM管理とawscli環境設定

Last updated at Posted at 2018-08-17

はじめに

IAM管理と、awscliを実行するための手順を確認します。
IAMグループやIAMポリシーを設定し、必要最低限の権限を付与し、管理しやすくすることを目的とします。
GUI(Management Console)でAWSを操作するのも良いですが、再現性を高めるために、awscliの実行環境を準備します。

AWSのアカウントについて

AWSには、以下の3種類のアカウントが存在します

  • AWSルートアカウント
  • IAMユーザ
  • IAMロール

セキュリティを重視すると、IAMロールをEC2インスタンスに付与し、インスタンス上からawscliを実行するのが望ましいですが、今回はローカル環境のLinuxからawscliを実行出来る環境を整備します。

IAMユーザの作成

ローカル環境のLinuxで、awscliを実行するように、まずはAWS上でIAMユーザを作成します
IAM Management Console を使用して、GUIでポチポチ作成します。
ユーザを作成すると、Access key ID と、 Secret access key が表示されます。これを利用してawscliでアクセスします。

IAM Group Name IAM User Name Permissions Usage
awscli-group awscli-user なし 日常的に使用する awscli
awscli-policygroup awscli-policyuser IAMFullAccess Policy管理のため、一時的に使用する awscli
Policyを変更出来るため、Keyが漏れないように注意
gui-group gui-sugiyama なし Management Console

環境情報

  • OS : CentOS7.5
  • pip : 18.0
  • aws-cli : 1.15.80

pip経由でawscliを導入する

CentOS7の場合

awscli を導入します。ついでに便利と噂の aws-shell も導入しておきます。

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py 
rm get-pip.py
pip install aws
pip install aws-shell --ignore-installed six

aws コマンドのバージョン確認

[root@sugi-awscli ~]# aws --version
aws-cli/1.15.80 Python/2.7.5 Linux/3.10.0-862.11.6.el7.x86_64 botocore/1.10.79

Ubuntu16.04の場合

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py 
rm get-pip.py
pip install aws
pip install aws-shell

pythonの導入

CentOS7の場合

前提パッケージの導入

yum install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel gcc libffi-devel

pyenvを導入します

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

pyenvのversion確認

[root@sugi-awscli eks]# pyenv -v
pyenv 1.2.7-1-g7190216

python3.7.0の導入

pyenv install 3.7.0

3.7.0 を使用する指定

pyenv global 3.7.0

確認

[root@sugi-awscli eks]# python --version
Python 3.7.0

Ubuntu16.04の場合

前提パッケージの導入

apt install -y zlib1g-dev libssl-dev libffi-dev
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo '#pyenv' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

python3.7.0の導入

pyenv install 3.7.0

3.7.0 を使用する指定

pyenv global 3.7.0

確認

[root@sugi-awscli eks]# python --version
Python 3.7.0

bashの補完機能を設定

aws_completer がinstallされている場所を確認します

root@sigi-awscli-ubuntu:~# updatedb
root@sigi-awscli-ubuntu:~# locate aws_completer
/usr/local/bin/aws_completer

上記の場所を確認し、以下の定義を bashrc へ追加します

echo "complete -C '/usr/local/bin/aws_completer' aws" >> ~/.bashrc

awscliを IAMユーザと紐づける

awscli に2個のIAMユーザと紐づけます。まずは、通常的に使用する IAMユーザ「awscli-user」を default profile として紐づけます

aws configure

実行例

[root@sugi-awscli ~]# aws configure
AWS Access Key ID [None]: himitsu1
AWS Secret Access Key [None]: himitsu2
Default region name [None]: us-west-2
Default output format [None]: text

次に、IAM Policy を管理するためのユーザ「awscli-policyuser」を紐づけます

aws configure --profile managepolicy

実行例

[root@sugi-awscli ~]# aws configure --profile managepolicy
AWS Access Key ID [None]: himitsu3
AWS Secret Access Key [None]: himitsu4
Default region name [None]: us-west-2
Default output format [None]: text

IAMグループ「awscli-group」に権限付与

awscliで紐づけた通常的に使用する IAMグループ「awscli-group」には、何も権限が設定されていないため、動作確認のため一時的に権限付与を確認します。

コマンドの引数などが不明の場合は、helpを表示することが出来ます

aws iam attach-group-policy help

ポリシー「IAMReadOnlyAccess 」を、IAMグループ「awscli-group」アタッチします

aws --profile managepolicy iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMReadOnlyAccess --group-name awscli-group

awscliで実行してみる

iam サービスで Read Only の権限が付与されたため、下記のようにコマンドを実行できます

[root@sugi-awscli ~]# aws iam list-policies 
POLICIES        arn:aws:iam::aws:policy/AWSDirectConnectReadOnlyAccess  0       2015-02-06T18:40:08Z    v2      True    /       0       ANPAI23HZ27SI6FQMGNQ2   AWSDirectConnectReadOnlyAccess    2018-08-15T17:28:44Z
POLICIES        arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess     0       2015-02-06T18:40:27Z    v2      True    /       0       ANPAI2D5NJKMU274MET4E   AmazonGlacierReadOnlyAccess       2016-05-05T18:46:10Z
POLICIES        arn:aws:iam::aws:policy/AWSMarketplaceFullAccess        0       2015-02-11T17:21:45Z    v3      True    /       0       ANPAI2DV5ULJSO2FYVPYG   AWSMarketplaceFullAccess 2018-08-08T21:13:02Z
POLICIES        arn:aws:iam::aws:policy/AWSIoT1ClickReadOnlyAccess      0       2018-05-11T21:49:24Z    v1      True    /       0       ANPAI35VTLD3EBNY2JGXS   AWSIoT1ClickReadOnlyAccess

IAMグループ「awscli-group」の権限削除

割り当てた権限を基に戻します

aws --profile managepolicy iam detach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMReadOnlyAccess --group-name awscli-group

参考URL

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