ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

AWSのポリシー

こんにちは!ノイです! 機械学習をする際にAWSを使う人も多いかと思います。 ポリシーの考え方は慣れる必要がありますので、記事にまとめました。

ポリシーとは

AWSのポリシーは、AWS Identity and Access Management (IAM) や AWSの一部のサービスで使用される、アクセス制御を定義するための文書です。ポリシーは、どのAWSリソースにアクセスできるか、どのアクションが実行できるか、どの条件が必要かなどを指定するために使用されます。 ポリシーは、JSON形式のテキストドキュメントであり、AWSの各リソース、IAMの各エンティティ、およびAWSサービスに対して作成することができます。ポリシーには、許可(allow)または拒否(deny)のアクションが含まれ、条件に基づいてアクセスを制御することができます。 AWSでは、AWS管理ポリシーとユーザー定義ポリシーの2種類のポリシーがあります。AWS管理ポリシーは、AWSによって作成され、AWSリソースへのアクセスを管理するために使用されます。ユーザー定義ポリシーは、ユーザーが作成し、IAMやAWSの一部のサービスで使用されるポリシーです。 ポリシーは、AWSのセキュリティにおいて非常に重要な役割を果たしています。適切に設定されたポリシーは、AWSリソースへのアクセスを厳密に制御し、セキュリティを強化することができます。

IMA

AWS Identity and Access Management (IAM) は、AWSのセキュリティおよびアクセス管理サービスです。IAMを使用することで、AWSリソースへのアクセスを管理することができます。 IAMは、AWSアカウント内のユーザー、グループ、ロール、およびポリシーの作成、管理、および割り当てを行うことができます。IAMは、AWSアカウントのセキュリティを強化し、リソースへのアクセスを厳密に制御することができます。 IAMを使用すると、ユーザーは、必要なリソースへのアクセスを持つアクセス許可を付与された認証情報を使用して、AWSにアクセスすることができます。IAMでは、ユーザー、グループ、およびロールに対して、異なるレベルのアクセス権を設定することができ、また、ポリシーを使用して、特定のアクション、リソース、および条件に基づいてアクセスを制御することができます。

AWSの6つのポリシータイプ

1.Identity-Based Policies(IDベースのポリシー) Identity-Based Policiesは、IAMユーザーやグループ、またはAWSアカウントのルートユーザーなど、AWSアカウント内のエンティティに対して許可や拒否のアクションを指定するポリシーです。IDベースのポリシーは、AWSマネジメントコンソール、AWS CLI、またはIAM APIを使用して作成することができます。

2.Resource-Based Policies(リソースベースのポリシー) Resource-Based Policiesは、S3バケットやLambda関数などのAWSリソースに対して許可や拒否のアクションを指定するポリシーです。これらのポリシーは、リソース自体に直接設定され、誰がアクセスできるかを指定します。

3.Permissions Boundaries(権限境界) Permissions Boundariesは、IAMエンティティに適用され、許可されたアクションのセットを制限するポリシーです。これにより、IAMエンティティが直接または間接的に取得できる許可が制限されます。権限境界は、異なるIAMユーザーやグループに対して異なるアクセス許可を提供するために使用されます。

4.Organizations SCPs(Service Control Policies) Organizations SCPsは、AWS Organizations内で使用されるポリシーです。SCPは、組織内のAWSアカウントに対して、AWSサービスやリソースへのアクセスを制限することができます。

5.Access Control Lists(ACLAccess Control Listsは、S3バケットのオブジェクトレベルでアクセスを制御するための設定です。ACLは、オブジェクトごとに異なる許可を設定することができ、IAMユーザーやグループに対して許可を与えたり、アクセスを拒否することができます。

6.Session Policies(セッションポリシー) Session Policiesは、一時的な認証情報を使用してAWSリソースにアクセスする場合に使用されるポリシーです。セッションポリシーは、IAMロールや一時的なセキュリティトークンに対して設定され、一時的な認証情報に対して適用されます。セッションポリシーは、一時的なアクセス許可を指定するために使用されます。

ポリシー設定でのエラー例

S3のバケットポリシーの編集で不明なエラーとしてPolicy has invalid resource

"Policy has invalid resource"というエラーは、バケットポリシーに誤ったリソースが指定されていることを示しています。このエラーを解決するには、以下の手順を実行してください。 ポリシーのJSONを確認する まず、バケットポリシーのJSONを確認して、正しいリソースが指定されていることを確認してください。リソースはARN(Amazon Resource Name)形式で指定される必要があります。ARNの形式が間違っていたり、存在しないARNを指定していたりすると、このエラーが発生します。

正しいリソースを指定する

次に、正しいリソースを指定して、バケットポリシーを更新してください。例えば、S3バケットに対してポリシーを設定する場合、リソースのARNは「arn:aws:s3:::your-bucket-name」になります。バケット名の部分を適切に変更して、正しいARNを指定してください。

権限を確認する

最後に、ポリシーに設定された権限が、実行しようとしているアクションと一致していることを確認してください。たとえば、ポリシーにはGetObjectアクションが許可されているが、実際に実行しようとしているアクションがListObjectsである場合、このエラーが発生します。

AWSのARN

AWSのARN(Amazon Resource Name)は、AWSでのリソースを一意に識別するためのグローバル識別子です。ARNは、リージョン、アカウント、リソースタイプ、リソース名の要素を含む文字列です。 ARNは、AWSの多くのサービスで使用されます。例えば、S3のバケット、IAMのロール、Lambda関数など、さまざまなリソースに対してARNを作成できます。ARNは、AWSリソースにアクセスする際に必要なパーミッションを設定するために使用されます。 ARNの一般的な形式は、以下のとおりです。 arn:aws:service:region:account-id:resource-type:resource-name

  • service: リソースを提供するAWSサービス名
  • region: リソースが存在するAWSリージョン名(グローバルサービスの場合は省略されることもある)
  • account-id: リソースを所有するAWSアカウントID
  • resource-type: リソースの種類
  • resource-name: リソース名 ARNを使用すると、リソースを識別して、AWSのポリシーやIAMロールで使用するために、正確なリソースを指定できます。

※この記事の一部情報にはChatGPTを用いています。