AWSは、StsClientを使用して一時的な認証情報getSessionTokenへのアクセスを制限します

アダーシュマドレチャ

ビジネスシナリオ

独自のAWSS3バケットを持つ複数のオフィスがあります。あるオフィスのユーザーは、別のオフィスのS3バケットにアクセスできません。

したがって、すべてのオフィスには、S3 BucketとがありますIAM user各IAMユーザーには、1つのバケットに対する権限のみがあります。オフィスが頻繁に拡大することはないため、IAMユーザーの作成とアクセス許可の割り当てはを介して手動で行われますAWS Console

アプリケーションセナリオ

ブラウザ(Javascript)は、サーバー(PHP API)にファイルをアップロードするための一時的な資格情報を要求しますAWS S3PHP APIフェッチAccess key IDおよびSecret access keyデータベースから(オフィスに基づくログイン)次に、を使用してAWS PHP SDKメソッドを呼び出しStsClient、使用getSessionToken()して一時的な認証情報を取得し、それをJavascriptに渡します。

PHPコード

use Aws\Sts\StsClient;
$credentials = new Aws\Credentials\Credentials($resultset['awssecret'], $resultset['awspass']);

$stsoptions = [
  'region'            => 'ap-south-1',
  'version'           => '2011-06-15',
  'signature_version' => 'v4',
  'credentials'       => $credentials,
];

$stsClient = new StsClient($stsoptions);
$response = $stsClient->getSessionToken();

質問

現在、IAMユーザーはそれぞれのバケットへのフルアクセス権を持っています。一時的な資格情報へのアクセスを特定の承認のみに制限したい。ファイルの削除やすべてのファイルの一覧表示ではなく、アップロードの権限のみのように。

StsClientバケットへのアクセス許可を制限できる場所に追加のパラメーターを渡すことはできますか?

編集1

ユーザーには、ポリシーを通じてアクセス許可が割り当てられます。以下は、ポリシーに追加された権限です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketByTags",
                "s3:GetBucketTagging",
                "s3:DeleteObjectVersion",
                "s3:GetObjectVersionTagging",
                "s3:ListBucketVersions",
                "s3:GetBucketLogging",
                "s3:RestoreObject",
                "s3:ListBucket",
                "s3:GetAccelerateConfiguration",
                "s3:GetObjectAcl",
                "s3:AbortMultipartUpload",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectTagging",
                "s3:GetMetricsConfiguration",
                "s3:PutObjectTagging",
                "s3:DeleteObject",
                "s3:PutBucketVersioning",
                "s3:GetIpConfiguration",
                "s3:DeleteObjectTagging",
                "s3:ListBucketMultipartUploads",
                "s3:GetBucketWebsite",
                "s3:PutObjectVersionTagging",
                "s3:DeleteObjectVersionTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketAcl",
                "s3:GetReplicationConfiguration",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetBucketCORS",
                "s3:GetAnalyticsConfiguration",
                "s3:GetObjectVersionForReplication",
                "s3:GetBucketLocation",
                "s3:ReplicateDelete",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::aws:s3:::mybucket",
                "arn:aws:s3:::*/*"
            ]
        }
    ]
}

AcceptedAnswerによって提案された回答に基づく私の解決策。

回答の提案に基づいて、許可を追加しました

 {
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "*"
 }

今私のPHPコードは

$policy = '{
  "Id": "Policy1534086947311",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1534086676951",
      "Action": [
        "s3:PutObject",
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucket"
      }
    }
  ]
}';

$awsrole = [
  'Policy' => $policy,
  'RoleArn' => 'arn:aws:s3:::mybucket',
  'RoleSessionName' => 'credApi' // just a random value
];
$response = $stsClient->assumeRole($awsrole);
jarmod

より厳密にスコープされた権限を持つIAMロールを作成し、IAMユーザー認証情報を使用してAssumeRole呼び出し、一時的な認証情報を取得します。IAMロールは、関連するバケットにs3:PutObject *のみを許可します。IAMユーザーには、ロールを引き受けるためのアクセス許可が必要です。

または、関連するS3バケット内のオブジェクトにアップロードするための事前署名されたURLをサーバーに生成させるだけです。クライアントは、他のS3操作にURLを使用できなくなります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

認証:Deviseサインアップ資格情報を使用して、投稿モデルへのアクセスを制限または許可することは可能ですか?

分類Dev

一時的な認証情報を使用して Postman から AWS API Gateway にリクエストする方法

分類Dev

ソーシャル認証を使用して静的Webサイトへのアクセスを制限する最も簡単な方法は何ですか

分類Dev

aws STSを使用して一時的な認証情報を取得する:Web IDトークンはどこにありますか?

分類Dev

Azure Active Directory資格情報を使用してSSAS(オンプレミス)へのアクセスを認証することは可能ですか?

分類Dev

gcloudの認証情報ヘルパーを使用してGoogleSource Repositoriesにアクセスすると、osxkeychainが機能しなくなります

分類Dev

Cognito IdentityPoolを介して一時的なAWS認証情報を取得する方法

分類Dev

AWS認証情報を取得してDockerのS3にアクセスする方法

分類Dev

AWS ElasticBeans EurekaとZuulを使用して、サービスへのアクセスを制限する方法は?

分類Dev

Spark / scalアプリを使用してs3にアクセスするときにAWS認証情報が見つかりません

分類Dev

Google認証プロバイダーから返された情報を使用してデータへのアクセスを提供する方法

分類Dev

コンピューター固有の情報(IPではなく、できればMACでもない)によってubuntuサーバーへのアクセスを制限しますか?

分類Dev

キー認証情報を使用してAWSのelasticsearchに接続します

分類Dev

Google ComputeEngineでアプリケーションのデフォルトの認証情報を使用してSheetsAPIにアクセスします

分類Dev

AWSはS3フォルダーレベルのアクセス用の動的認証情報を生成しますか?

分類Dev

AWSはgolangでロールベースの認証情報を取得します

分類Dev

codedeployスクリプトを使用してAWS認証情報をEC2サーバーに渡す方法は?

分類Dev

CloudIAMを使用してGoogleCloudPlatformのAppEngineへのアクセスを制限する

分類Dev

CloudIAMを使用してGoogleCloudPlatformのAppEngineへのアクセスを制限する

分類Dev

現在の認証資格情報をUWPアプリからWebサービスに渡して、これらの資格情報を使用してサーバー上のリソースにアクセスします

分類Dev

クライアント側の SSL 証明書を使用して GitHub Pages へのアクセスを制限する方法は?

分類Dev

botoの応答:AWSは提供されたアクセス認証情報を検証できませんでした

分類Dev

STS 一時認証情報を使用した Websocket 上の AWS IoT MQTT

分類Dev

複数の認証情報ファイルを渡してGCPサービスにアクセスする

分類Dev

位置情報へのアクセス-アプリは位置情報にアクセスするためのユーザー権限を要求していません-iOS11

分類Dev

AWS SDK Goを使用してFargateタスクのロールからAWS認証情報を読み込む正しい方法は何ですか?

分類Dev

PHPでsetterへのアクセスを制限しますか?

分類Dev

Spring Socialを使用して、自分のFacebook情報にアクセスできますが、友達リスト情報にはアクセスできません。

分類Dev

openiddict使用時の認証チケット情報へのアクセス

Related 関連記事

  1. 1

    認証:Deviseサインアップ資格情報を使用して、投稿モデルへのアクセスを制限または許可することは可能ですか?

  2. 2

    一時的な認証情報を使用して Postman から AWS API Gateway にリクエストする方法

  3. 3

    ソーシャル認証を使用して静的Webサイトへのアクセスを制限する最も簡単な方法は何ですか

  4. 4

    aws STSを使用して一時的な認証情報を取得する:Web IDトークンはどこにありますか?

  5. 5

    Azure Active Directory資格情報を使用してSSAS(オンプレミス)へのアクセスを認証することは可能ですか?

  6. 6

    gcloudの認証情報ヘルパーを使用してGoogleSource Repositoriesにアクセスすると、osxkeychainが機能しなくなります

  7. 7

    Cognito IdentityPoolを介して一時的なAWS認証情報を取得する方法

  8. 8

    AWS認証情報を取得してDockerのS3にアクセスする方法

  9. 9

    AWS ElasticBeans EurekaとZuulを使用して、サービスへのアクセスを制限する方法は?

  10. 10

    Spark / scalアプリを使用してs3にアクセスするときにAWS認証情報が見つかりません

  11. 11

    Google認証プロバイダーから返された情報を使用してデータへのアクセスを提供する方法

  12. 12

    コンピューター固有の情報(IPではなく、できればMACでもない)によってubuntuサーバーへのアクセスを制限しますか?

  13. 13

    キー認証情報を使用してAWSのelasticsearchに接続します

  14. 14

    Google ComputeEngineでアプリケーションのデフォルトの認証情報を使用してSheetsAPIにアクセスします

  15. 15

    AWSはS3フォルダーレベルのアクセス用の動的認証情報を生成しますか?

  16. 16

    AWSはgolangでロールベースの認証情報を取得します

  17. 17

    codedeployスクリプトを使用してAWS認証情報をEC2サーバーに渡す方法は?

  18. 18

    CloudIAMを使用してGoogleCloudPlatformのAppEngineへのアクセスを制限する

  19. 19

    CloudIAMを使用してGoogleCloudPlatformのAppEngineへのアクセスを制限する

  20. 20

    現在の認証資格情報をUWPアプリからWebサービスに渡して、これらの資格情報を使用してサーバー上のリソースにアクセスします

  21. 21

    クライアント側の SSL 証明書を使用して GitHub Pages へのアクセスを制限する方法は?

  22. 22

    botoの応答:AWSは提供されたアクセス認証情報を検証できませんでした

  23. 23

    STS 一時認証情報を使用した Websocket 上の AWS IoT MQTT

  24. 24

    複数の認証情報ファイルを渡してGCPサービスにアクセスする

  25. 25

    位置情報へのアクセス-アプリは位置情報にアクセスするためのユーザー権限を要求していません-iOS11

  26. 26

    AWS SDK Goを使用してFargateタスクのロールからAWS認証情報を読み込む正しい方法は何ですか?

  27. 27

    PHPでsetterへのアクセスを制限しますか?

  28. 28

    Spring Socialを使用して、自分のFacebook情報にアクセスできますが、友達リスト情報にはアクセスできません。

  29. 29

    openiddict使用時の認証チケット情報へのアクセス

ホットタグ

アーカイブ