COLUMN

AWSのサービスへのアクセス制御を定義できるAWS IAMのポリシーとは?実際に使用してみた

Amazon Web Services (以下AWSとする)では、AWSのサービスやリソースへのアクセスを安全に管理できるIdentity and Access Management(以下IAMとする)機能があります。
当コラムでは「IAM」機能のひとつである、ポリシーの概要説明や利用方法を実践しご紹介します。
前回のコラムではAWS IAMの概要、料金、使用目的等をご紹介していますので是非お先にご確認ください。
リンク:AWS IAMによる権限設定のメリットと設定方法

ポリシーとは?

AWS IAMの「グループ」、「ユーザー」、「ロール」、「ポリシー」の4つの要素の一つです。
ポリシーは「グループ」、「ユーザー」、「ロール」に対し、各AWSのサービスのリソースへの操作の制御(許可、拒否)ができます。
ポリシーの基本は「誰が」「何のAWSサービスを」「何のリソースに対して」「何の操作を」「許可する(拒否する)」を「JSONポリシードキュメント」という形式で定義します。

ポリシーの種類

ポリシーには以下のような種類があります。

管理ポリシー

ポリシー単体で存在し、ユーザー、グループ、またはロールに紐づけることができます。管理ポリシーは以下の2つ分類されています。

  • AWS管理ポリシー
    AWSが作成および管理している管理ポリシーです。
    編集、削除することは不可能になっています。
  • カスタマー管理ポリシー
    利用者が独自で作成および管理する管理ポリシーです。
    ポリシーを新規作成、編集、削除することができます。
インラインポリシー

単一のユーザー、グループ、またはロールに直接埋め込むポリシーです。

ポリシーのタイプ

AWSでは、6つのポリシータイプ(アイデンティティベースのポリシー、リソースベースのポリシー、アクセス許可の境界、Organizations SCP、ACL、セッションポリシー)がサポートされています。
タイプの詳細については、「Policies and Permissions」をご参照ください。

ポリシーの作成手段

ポリシーは、以下の様々な方法により作成することができます。

コンソール
  • JSONを直接記述し作成
  • JSONの記述を必要としない画面のガイドで作成
CLI
  • カスタマー管理ポリシーを作成するコマンドの使用
  • インラインポリシーを作成するコマンドの使用
API
  • カスタマー管理ポリシーを作成
  • インラインポリシーを作成

当コラムでは主にJSONを直接記述し、ポリシーの作成を行います。

JSONポリシー概要

JSONポリシードキュメントはエレメントという要素で構成されています。

  • IDやバージョンなどのポリシー全体情報
  • 1つ以上の個別のステートメント
  • ステートメントを構成するアクセス許可に関するエレメント

出典:

ステートメントを構成するエレメントについては、「IAM JSON ポリシーエレメントのリファレンス」をご参照ください。

ポリシーのアタッチ方法

AWS管理ポリシーまたはカスタマー管理ポリシーは「ユーザー」、「グループ」または「ロール」に対してアタッチして使用します。
ここではユーザーへのAWS管理ポリシー「AdministratorAccess」のアタッチを例として、ポリシーのアタッチ方法を説明します。

アクセス管理の「ポリシー」をクリックします。

こちらがポリシーの一覧画面です。

黄色のAWSマークが表示されているポリシーがAWS管理ポリシーです。
編集時刻でAWSがAWS管理ポリシーをアップデートした日時を確認できます。

ポリシーの検索欄で「AdministratorAccess」を検索し、ポリシー名をクリックします。

「アクセス権限」タブではJSONドキュメントとポリシー概要を確認できます。
ポリシーをアタッチするため、「ポリシーの使用状況」タブをクリックします。

「ポリシーの使用状況」タブには既にアタッチされている「ユーザー」「グループ」「ロール」が表示されています。
「アタッチ」をクリックします。

ポリシーをアタッチするユーザーを選択し、ポリシーのアタッチをクリックします。

「アクセス権限」タブでさきほど選択したユーザーが追加され、ポリシーがアタッチされたことが確認できます。

実施例

ポリシーを利用してS3バケットへのアクセス制御を行います。

  • 1. 特定のS3バケットへのアクセス許可の実践例
  • 2. 特定のS3バケットのフォルダへのアクセス許可の実践例
1. 特定のS3バケットへのアクセス許可の実践例

特定のS3バケットのみへのアクセスを許可し、オブジェクトの操作を可能とするポリシーを作成します。作成したポリシーのみをアタッチしたユーザーでバケットへアクセスの確認を行います。

アクセス管理の「ポリシー」から「ポリシーの作成」をクリックします。

「JSON」タブをクリックします。

以下のJSONを入力し、「ポリシーの確認」をクリックします。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3::: {アクセスを許可するバケット名}"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3::: {アクセスを許可するバケット名}/*"
      }
   ]
}

ポリシー名を入力し、「ポリシーの作成」をクリックします。

画面上部に「~が作成されました。」と表示され、表示されている「ポリシー名」をクリックします。

「ポリシーの使用状況」タブをクリックします。

「アタッチ」をクリックします。

ポリシーをアタッチするユーザーを選択し、「ポリシーのアタッチ」をクリックします。

アタッチしたユーザーを確認し、「ユーザー名」をクリックします。

当ポリシーのみアタッチされていることを確認できました。

ポリシーでアクセスを許可したバケットへアクセスします。

※他のバケットは表示されないように「ListAllMyBuckets」のアクションを外しています。そのため、S3のバケット一覧は表示されません。URLで直接アクセスする必要があります。
https://s3.console.aws.amazon.com/s3/buckets/{アクセスを許可するバケット名}/

特定のS3バケットへのアクセスを確認できました。

※ポリシーで許可していない他のバケットへアクセスした場合は下記の通りエラーとなります。

2. 特定のS3バケットのフォルダへのアクセス許可の実践例

1.で作成したポリシーのアクションに条件キーを追加し「特定のフォルダのみアクセスできる」要素を加えたポリシーを作成します。
「ListBucket」では、Conditionを用いてフォルダの絞り込みを行い、「Getobject、Putobject、Deleteobject」では、「ListBucket」と同様なフォルダを絞り込むためにConditionで使用する条件キーが利用できないため、Resourceでの絞り込みをします。
S3で定義されているアクションでは、このように使用可能なARNや条件キーが異なります。詳細は以下のリンクをご確認ください。

リンク:Amazon S3のアクション、リソース、および条件キー別ウィンドウで開きます

以下のJSONを入力し、先ほどと同様な手順でポリシーを作成し、ユーザーへアタッチします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::{アクセスを許可するバケット名}",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "{アクセスを許可するフォルダ名}/*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3::: {アクセスを許可するバケット名}/{アクセスを許可するフォルダ名}/*"
        }
    ]
}

先ほどと同じようにURLを指定してポリシーで許可したフォルダへアクセスします。
https://s3.console.aws.amazon.com/s3/buckets/{アクセスを許可するバケット名}/{フォルダ名}/

特定のフォルダへのアクセスを確認できました。

※ポリシーで許可していない他のフォルダへアクセスした場合は下記の通りエラーとなります。

おわりに

「AWS IAM」ポリシーを活用することにより、ユーザーのリソースへのアクセスをきめ細かに制御できます。グループやロールとも合わせて利用し効率よく安全にセキュリティを高めましょう。

ページ上部へ戻る

無料ダウンロード

自社のクラウド導入に必要な知識、ポイントを
このに総まとめ!

あなたはクラウド化の
何の情報を知りたいですか?

  • そもそも自社は本当にクラウド化すべき?オンプレとクラウドの違いは?
  • 【AWS・Azure・Google Cloud】
    どれが自社に最もマッチするの?
  • 情シス担当者の負荷を減らしてコストを軽減するクラウド化のポイントは?
  • 自社のクラウド導入を実現するまでの具体的な流れ・検討する順番は?

初めての自社クラウド導入、
わからないことが多く困ってしまいますよね。

NTT東日本では
そんなあなたにクラウド導入に必要な情報を

1冊の冊子にまとめました!

クラウド化のポイントを知らずに導入を進めると、以下のような事になってしまうことも・・・

  • システムインフラの維持にかかるトータルコストがあまり変わらない。。
  • 情シス担当者の負担が減らない。。
  • セキュリティ性・速度など、クラウド期待する効果を十分に享受できない。。
理想的なクラウド環境を実現するためにも、
最低限の4つのポイントを
抑えておきたいところです。
  • そもそも”クラウド化”とは?
    その本質的なメリット・デメリット
  • 自社にとって
    最適なクラウド環境構築のポイント
  • コストを抑えるため
    具体的なコツ
  • 既存環境からスムーズにクラウド化
    実現するためのロードマップ

など、この1冊だけで自社のクラウド化のポイントが簡単に理解できます。
またNTT東日本でクラウド化を実現し
問題を解決した事例や、
導入サポートサービスも掲載しているので、
ぜひダウンロードして読んでみてください。

クラウドのわからない・
面倒でお困りのあなたへ

クラウドのご相談できます!
無料オンライン相談窓口

NTT東日本なら貴社のクラウド導入設計から
ネットワーク環境構築・セキュリティ・運用まで
”ワンストップ支援”が可能です!

NTT東日本が選ばれる5つの理由

  • クラウド導入を
    0からワンストップでサポート可能!
  • 全体最適におけるコスト効率・業務効率の改善
    中立的にご提案
  • クラウド環境に問題がないか、
    第3者目線でチェック
    してもらいたい
  • 安心の24時間・365日の対応・保守
  • NTT東日本が保有する豊富なサービスの組み合わせで
    ”課題解決”と”コスト軽減”を両立

特に以下に当てはまる方はお気軽に
ご相談ください。

  • さまざまな種類やクラウド提供事業者があってどれが自社に適切かわからない
  • オンプレミスのままがよいのか、クラウド移行すべきなのか、迷っている
  • オンプレミスとクラウド移行した際のコスト比較を行いたい
  • AWSとAzure、どちらのクラウドが自社に適切かわからない
  • クラウド環境に問題がないか、第3者目線でチェックしてもらいたい
  • クラウド利用中、ネットワークの速度が遅くて業務に支障がでている

クラウドを熟知するプロが、クラウド導入におけるお客さまのLAN 環境や接続ネットワーク、
クラウドサービスまでトータルにお客さまのお悩みや課題の解決をサポートします。

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。