labunix's blog

labunixのラボUnix

AWS CloudShell専用のIAMユーザを作ってみる。

■AWS CloudShell専用のIAMユーザを作ってみる。

 AWS アカウントでの IAM ユーザーの作成
 https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html

■変更箇所以外はデフォルトのまま、コンソールから作成

 ユーザ名:labunix-cloudshell
 ●AWS マネジメントコンソールへのアクセス
 既存のポリシーを直接アタッチ
  ●AWSCloudShellFullAccess
 タグの追加 (オプション)
  キー:Project
  値 :cloudshell

■ログインして確認してみる。

 https://[アカウント ID (12 桁)].signin.aws.amazon.com/console

$ aws s3 mb s3://labunix-sample
make_bucket failed: s3://labunix-sample An error occurred (AccessDenied)
 when calling the CreateBucket operation: Access Denied

■labunix-cloudshellアカウントにはIAMの閲覧権限も無いので権限のあるユーザで取得。

 https://aws.amazon.com/cloudshell/

$ aws s3 mb s3://labunix-sample
make_bucket: labunix-sample

$ aws s3 ls s3://labunix-sample

$ aws s3 rb s3://labunix-sample
remove_bucket: labunix-sample

$ aws s3 ls s3://labunix-sample

An error occurred (NoSuchBucket) when calling the ListObjectsV2 operation: The specified bucket does not exist

$ aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AWSCloudShellFullAccess
{
    "Policy": {
        "PolicyName": "AWSCloudShellFullAccess",
        "PolicyId": "ANPAZKAPJZG4HEDUXFSA3",
        "Arn": "arn:aws:iam::aws:policy/AWSCloudShellFullAccess",
        "Path": "/",
        "DefaultVersionId": "v1",
        "AttachmentCount": 1,
        "PermissionsBoundaryUsageCount": 0,
        "IsAttachable": true,
        "Description": "Grants using AWS CloudShell with all features",
        "CreateDate": "2020-12-15T18:07:44+00:00",
        "UpdateDate": "2020-12-15T18:07:44+00:00"
    }
}

■マネージメントコンソールからcsvを取得。
 Identity and Access Management (IAM) > アクセスレポート > 認証情報レポート
 「レポートのダウンロード」でダウンロード。

■先に最初の行とユーザ名で一致する行だけ行列を入れ替えて表示。
 とりあえず、MFAは有効にした方が良さそう。

$ awk -F, -v target="labunix-cloudshell" \
  '{if(NR==1 || $0 ~ target){for(a=1;a<=NF;a++){b[a]=b[a]" = "$a}}}END{for(n in b){print n,b[n]}}' \
  ダウンロード/status_reports_2020-12-20T15-12-27+00-00.csv 
1 user = labunix-cloudshell
2 arn = arn:aws:iam::XXXXXXXXXXXX:user/labunix-cloudshell
3 user_creation_time = 2020-12-20T14:45:05+00:00
4 password_enabled = true
5 password_last_used = 2020-12-20T15:00:17+00:00
6 password_last_changed = 2020-12-20T15:00:05+00:00
7 password_next_rotation = N/A
8 mfa_active = false
9 access_key_1_active = false
10 access_key_1_last_rotated = N/A
11 access_key_1_last_used_date = N/A
12 access_key_1_last_used_region = N/A
13 access_key_1_last_used_service = N/A
14 access_key_2_active = false
15 access_key_2_last_rotated = N/A
16 access_key_2_last_used_date = N/A
17 access_key_2_last_used_region = N/A
18 access_key_2_last_used_service = N/A
19 cert_1_active = false
20 cert_1_last_rotated = N/A
21 cert_2_active = false
22 cert_2_last_rotated = N/A

■全ユーザを対象に行列を入れ替えて表示するなら、「;」区切りに変えて以下のようにする。

$ awk -F, '{for(a=1;a<=NF;a++){b[a]=b[a]";"$a}}END{for(n in b){print n,b[n]}}' \
    ダウンロード/status_reports_2020-12-20T15-12-27+00-00.csv