読者です 読者をやめる 読者になる 読者になる

rakugakibox.net

技術ノート。兼JS/CSS実験場。 ♡:Java, Spring, AWS.

AWS: リードオンリーな IAM ユーザの作り方 (自分のユーザ情報だけは変更可)

読取り専用だけど、自分のパスワードやアクセスキー,
MFA (二段階認証) の設定だけはユーザ自身で出来る。

そんな IAM ユーザの作り方のメモです。
請求情報も参照できるポリシーも書きました。

Management Console や API から自由に参照はしていいけど、
変更は許したくない、というユーザ用に。

IAM グループの作成

この記事では IAM グループを作成し、そのグループにポリシーを与えていきます。

IAM Management Console - グループ から
リードオンリー用のグループを作成します。

ここでは "Readonly" という名前でグループを作成しました。
ポリシーは後で追加していくので、まずは空っぽで。

f:id:akihyrox:20160416164959j:plain

次に IAM Management Console - ユーザー から
ユーザを作成し、 Readonly グループに加えます。

f:id:akihyrox:20160416165000j:plain

グループに与える権限 (ポリシー)

以降、次のポリシーに分けてグループに追加していきます。
不要なものは読み飛ばしてください。

  • 各サービスの情報の参照
  • 請求情報の参照
  • 自身のパスワードの変更 (認証情報ページからの変更)
  • 自身のパスワードの変更 (ユーザーページからの変更)
  • 自身のアクセスキーの変更
  • 自身の MFA デバイスの変更
  • 自身の SSH キーの変更

各サービスの情報の参照

管理ポリシー "ReadOnlyAccess" が用意されてるので、
それを Readonly グループに追加するだけでOKです。

f:id:akihyrox:20160416165001j:plain

請求情報の参照

デフォルトでは IAM ユーザは請求情報にアクセスできなくなってるので、
まずはアクセス許可の設定をします。

ルートアカウントで Billing Management Console - アカウント を開き、
[IAM アクセスのアクティブ化] を ON にします。

f:id:akihyrox:20160416165002p:plain

その後、 Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "PortalReadonlyAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-portal:View*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

f:id:akihyrox:20160416165003j:plain

もし参照できる情報を制限したい場合は、試してないけど
"aws-portal:View*" の部分にワイルドカードを使わなければ良いと思う。

ViewBilling

次の [Billing and Cost Management] コンソールページを表示する権限を
IAM ユーザーに与えるか拒否します。

  • 請求ダッシュボード
  • 請求書
  • コストエクスプローラー
  • 予算
  • 支払履歴
  • 一括請求
  • 設定
  • Credits
  • 前払い(前払いの詳細については、「一括請求について」を参照してください。)

ViewAccount

アカウント設定を表示するアクセス権限を IAM ユーザーに与えるか拒否します。

ViewBudget

予算を表示するアクセス権限を IAM ユーザーに与えるか拒否します。
IAM ユーザーに予算の表示を許可するには、ViewBilling も許可する必要があります。

ViewPaymentMethods

支払方法を表示するアクセス権限を IAM ユーザーに与えるか拒否します。

ViewUsage

AWS 使用状況レポートを表示するアクセス権限を IAM ユーザーに与えるか拒否します。
IAM ユーザーが使用状況レポートを表示できるようにするには、
ViewUsage と ViewBilling の両方を許可する必要があります。

自身のパスワードの変更 (認証情報ページからの変更)

Management Console 右上メニュー [認証情報] からの変更を許可します。

f:id:akihyrox:20160416165004j:plain

デフォルトでは全てのユーザが自身のパスワードは変更できるようになっているので、
特にやることはありません。

もし一部のユーザのみ自身のパスワードを変更可にする場合は、
まずは IAM Management Console - アカウント設定
[ユーザーにパスワードの変更を許可] をオフにします。

その後、 Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "MyPasswordAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:ChangePassword",
        "iam:GetAccountPasswordPolicy"
      ],
      "Resource": "*"
    }
  ]
}

f:id:akihyrox:20160416165005j:plain

自身のアクセスキーの変更 (ユーザーページからの変更)

ユーザページ からの変更を許可します。

Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "MyLoginProfileAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:*LoginProfile"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListAccount*",
        "iam:GetAccountSummary",
        "iam:GetAccountPasswordPolicy",
        "iam:ListUsers"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

f:id:akihyrox:20160416165006p:plain

自身のアクセスキーの変更

Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "MyAccessKeyAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:*AccessKey"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListAccount*",
        "iam:GetAccountSummary",
        "iam:ListUsers"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

f:id:akihyrox:20160416165007p:plain

自身の MFA デバイスの変更

Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "MyMFADeviceAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:*MFADevice"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}",
        "arn:aws:iam::*:mfa/${aws:username}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListAccount*",
        "iam:GetAccountSummary",
        "iam:ListUsers",
        "iam:ListMFADevices",
        "iam:ListVirtualMFADevices"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

f:id:akihyrox:20160416165008p:plain

自身の SSH キーの変更

Readonly グループに次のインラインポリシーを追加すればOKです。
僕は "MySSHPublicKeyAccess" という名前で追加しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:*SSHPublicKey"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListAccount*",
        "iam:GetAccountSummary",
        "iam:ListUsers",
        "iam:ListSSHPublicKeys"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

f:id:akihyrox:20160416165326p:plain

以上!

これでIAMユーザをグループに加えたり外したりで管理できるようになりました!

参考

Amazon Web Services クラウドデザインパターン設計ガイド 改訂版

Amazon Web Services クラウドデザインパターン設計ガイド 改訂版

Amazon Web Services クラウドデザインパターン実装ガイド 改訂版

Amazon Web Services クラウドデザインパターン実装ガイド 改訂版

  • 作者: 大澤文孝,アマゾンデータサービスジャパン玉川憲,アマゾンデータサービスジャパン片山暁雄,アイレット鈴木宏康,日経SYSTEMS
  • 出版社/メーカー: 日経BP社
  • 発売日: 2015/03/05
  • メディア: 単行本
  • この商品を含むブログ (2件) を見る