AWS 読み取り専用(請求関連の閲覧拒否)のIAMユーザーを作成する

## はじめに
こんにちは。アリガアウルです。
今回は、AWSのアカウントで読み取り専用(請求関連の閲覧拒否)のIAMユーザーを作成することにしました。
経緯としては、自身のAWS学習状況を確認してもらうためのユーザー作成が必要となったので、IAMユーザー作成をすることにしました。
作成するうえで躓いたところなども含めて記載していこうと思います。

## やりたいこと
・AWSの管理コンソールから全サービスのリソースを読み取り権限で閲覧することが出来るIAMユーザーを作成したい。
・請求画面については閲覧できないようにしたい。

## 結論
・既存ポリシーの「ReadOnlyAccess」をIAMユーザーに付与する。
　※フィルターの仕方を間違えてこのポリシーを見つけるのに時間を要しました。
・カスタムポリシーで請求関連リソースへのアクセスを拒否するポリシーを作成し、
　IAMユーザーに付与する。

注意：AWSでは、以前使用されていたaws-portalアクションが2023年7月にサポート終了となり、新しい細かいアクセスコントロールが導入されていました。これにより、請求関連のアクセス制御は新しいポリシーで管理されます。

公式情報：
https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/migrate-granularaccess-whatis.html

## IAMユーザーの作成手順
１．カスタムポリシーの作成(請求関連の閲覧拒否)
以下のようにカスタムポリシーを作成し、請求関連のアクセスをすべて拒否します。

```Rust:json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ce:*",
                "cur:*",
                "budgets:*",
                "purchase-orders:*",
                "account:*",
                "billing:*",
                "savingsplans:*",
                "tax:*"
            ],
            "Resource": "*"
        }
    ]
}
```

２．IAMユーザー作成
IAMユーザーを作成しReadOnlyAccessポリシーを付与する。
このポリシーは、AWSの全リソースに対する読み取り専用のアクセスを提供します。
請求関連閲覧不可のカスタムポリシーを付与する。

## １．カスタムポリシーの作成(請求関連の閲覧拒否)
自分の作業用IAMユーザーでAWSマネジメントコンソールにログインします。
コンソールより検索欄に「IAM」と入力して、「IAM」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/e34a2001-08f1-fe7e-52fc-573d08c25e98.png)

左側のペインより、「ポリシー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/28796d77-2461-fcaa-e6ee-5f6a650badfe.png)

「ポリシーの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/13a593c9-c610-74d5-f842-95247f3c8b9a.png)

「ポリシーエディタ」の「JSON」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/73280030-65f2-1960-77f7-e7e7ae7de084.png)

ポリシーエディタの中身を書き換えます。
※IAMユーザーの作成手順のカスタムポリシーの内容を参照。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/38969c61-0b04-915e-98a4-a0ddee811deb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/40b57764-3f4d-b007-4739-ff73c473a2de.png)

画面右下の「次へ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/b069d784-8a87-6939-b7c2-802d07961f56.png)

「ポリシー名」を任意の名前で入力して、右下の「ポリシーの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/750aa12d-8e05-7363-61ff-380f12a2c2ec.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/b797794e-b9d9-e8e2-298e-03b99f8d9e26.png)

「ポリシー＜ポリシー名＞が作成されました。」と表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/6d293434-1aef-1512-10a3-7d3be4818189.png)

## ２．IAMユーザー作成
左側のペインより、「ユーザー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/a1ba1a41-7c1a-2af1-ced1-4dde051b8deb.png)

「ユーザーの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/57c1719a-3e1c-1a34-fde6-c3710a76b318.png)

「ユーザー名」を任意の名前で入力し、以下のチェックをして「次へ」を選択します。

■AWSマネジメントコンソールへのユーザーアクセスを提供する-オプション
    ◯Identity Centerでユーザーを指定する -推奨
    ⦿IAMユーザーを作成します
    コンソーパスワード
    ⦿自動生成されたパスワード
    ◯カスタムパスワード

■ユーザーは次回サインイン時に新しいパスワードを作成する必要があります-オプション
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/a744f415-ccee-68dd-7004-12c8b55d1860.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/95929b00-2442-626a-bbf8-68c0d7304f21.png)

「ポリシーを直接アタッチする」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/af65887e-aa35-636a-c811-994456ed61e1.png)

許可ポリシーの絞り込みタイプで「AWS管理-ジョブ機能」を選択します。
※最初に、検索で「ReadOnlyAccess」でフィルタリングしたが該当が多すぎて見つけることが出来ませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/4182141a-2c07-7496-a8b0-68625265f677.png)

「ReadOnlyAccess」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/f0cf2677-c88d-99a3-900e-4e73e8d2acc5.png)

許可ポリシーの絞り込みタイプで「カスタマー管理」を選択します。
作成したカスタマーポリシーを選択します。
「次へ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/e77359b4-864c-a662-ace4-bca250502107.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/703c61e4-f1ae-1adf-64dc-feb2bdcb63a1.png)

「ユーザーの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/0dd42d7c-6457-d3f7-1846-5470b75a5be4.png)

「コンソールサインインの詳細」情報をメモします。
「ユーザーリストに戻る」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/9eefa2e3-fe8b-07d6-49de-9adc2cb548d7.png)

作成したIAMユーザーが表示されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/830b12c1-24f4-8d8d-062e-0708a00c57f6.png)

## 作成したIAMユーザーの確認
新しいIAMユーザーでログインする。(パスワード更新含む)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/7ece5a2e-b4df-92c3-ac12-6813a75beeae.png)

EC2のリソースの閲覧が出来ることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/adb1eb83-9b2c-c923-3ed1-70ad62078b9e.png)

請求画面が閲覧出来ないことを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3840571/02bcd313-9b35-a331-428c-4adb72381aab.png)

## まとめ
今回は、読み取り専用で請求関連の閲覧を拒否するIAMユーザーを作成してみました。
最小権限の考えからすると、ReadOnlyAccessは読み取り専用ではあるのですが幅広いAWSのサービスを見ることが出来るので、読み取り専用でも本来は必要な権限のみに絞った方がいいと思いました。
最初は、テストユーザーを作成、ポリシーを付与してみて想定の権限になっているのかをチェックした方がいいと思います。
それぞれ付与したい権限がケースにより異なると思いますので一例としてお読みいただければ幸いです。

## 最後に
弊社では、**エンジニア積極採用中です**！！！
SES、請負、受託、Saleforce やりたい方はご興味を持っていただけたら幸いです。

ワクトでは、以下の **Mission**・**Vision**・**Value** を掲げております。

- **Mission** : 「IT× ワクワク」で、社会の発展に貢献する
- **Vision** : 大切な人に心から薦めたい会社であり続ける
- **Value** :
  - One team for customers
  - 熱意 × 人格 × 能力
  - まずやってみる

ワクトでは、もう一つ重要なものとして「 **マインドマップ** 」というものがあります。
こちらも見てみて下さい。

![Mind Map](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3512616/7cdae347-bb0c-9527-ed08-1d94c7f0337e.png)

https://wakuto.net/

https://www.wantedly.com/companies/wakuto0910

https://twitter.com/wakuwaku_toyou

また、本記事の内容は個人の考えであり、会社を代表するものではございません。