gpt4 book ai didi

amazon-ec2 - 我如何在 AWS 中使用 IAM 来提供临时安全凭证

转载 作者:行者123 更新时间:2023-12-05 06:45:43 30 4
gpt4 key购买 nike

IAM 有一个名为 Simple Token Service (STS) 的服务组件。它允许您通过 SDK/API 创建临时访问权限以访问 AWS 资源,而无需创建专用凭证。这些 STS 代币具有用户定义的生命周期,这些代币会在之后被销毁。人们使用此服务从移动设备(例如 Android/IOS 应用程序)访问内容。

但是我不知道如何使用这个服务。

感谢任何帮助或支持。

谢谢

最佳答案

STS 和 IAM 齐头并进,使用起来非常简单。由于您没有给出用例,在我们开始编码之前,请允许我解释一些事情。

注意:我是用PHP编写的,SDK版本是3。

STS 的想法是创建一些 token ,允许持有者执行某些操作而无需您(所有者或受让人)损害您自己的凭据。您要使用哪种类型的 STS 取决于您要做什么。 Possible actions are listed here .

E.g.1: Typically, you use AssumeRole for cross-account access or federation. Imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts.

E.g.2: Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances.

假设您有一个 IAM 用户,并且您想要为该用户创建许多临时凭证,每个凭证的时间范围为 15 分钟。然后您将编写以下代码:

$stsClient = \Aws\Laravel\AwsFacade::createClient('sts', array(
'region' => 'us-east-1'
));

$awsTempCreds = $stsClient->getSessionToken(array(
'DurationSeconds' => 900
));

注意事项:

  1. IAM 用户创建的凭证在您指定的持续时间内有效,从 900 秒(15 分钟)到最长 129600 秒(36 小时),默认为 43200 秒(12 小时);使用帐户凭据创建的凭据范围可以从 900 秒(15 分钟)到最长 3600 秒(1 小时),默认值为 1 小时。
  2. 在上面的示例中,我使用 AWS Facade 获取 $stsClient,它是 Laravel 框架的一部分。如何通过传递凭据来获取 $stsClient 取决于您。阅读此 installation guide关于如何实例化您的 $stsClient
  3. 由于 STS 是全局资源,即它不需要您位于特定区域,因此您必须始终将区域设置为 us-east-1。如果您的区域设置为任何其他区域,您将收到类似 should be scoped to a valid region, not 'us-west-1' 的错误。
  4. 您创建的临时凭证的数量没有限制。
  5. 这些凭据将具有与派生它们的 Account/IAM 相同的权限。

以上代码为 AWS 账户或 IAM 用户返回一组临时凭证。凭证由访问 key ID、 secret 访问 key 和安全 token 以及一些其他信息(例如到期时间)组成。

您现在可以将这些临时凭证提供给其他人。假设我把这个给了我的 friend ,他碰巧使用了 Javascript API。他现在可以编写这样的代码:

<script>
var accessKey = '<?php echo $credentials["AccessKeyId"] ?>';
var accessToken = '<?php echo $credentials["SecretAccessKey"] ?>';
var accessSessionToken = '<?php echo $credentials["SessionToken"] ?>';

AWS.config.update({
credentials: {
accessKeyId: accessKey,
secretAccessKey: accessToken,
sessionToken: accessSessionToken
},
region: 'us-east-1'
});

var bucket = new AWS.S3();
var file = fileChooser.files[0];
var params = {Bucket: 'mybucket', Key: file.name, ContentType: file.type, Body: file};

bucket.upload(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
}).on('httpUploadProgress', function(evt) {
console.log('Progress:', evt.loaded, '/', evt.total);
});
</script>

这个脚本做什么?

  1. 使用临时凭证创建新客户端。
  2. 使用 Multipart Upload 将一个非常大的文件(超过 100MB)上传到 mybucket

同样,只要您的临时凭证有权执行此操作,您就可以对任何 AWS 资源执行操作。希望这对您有所帮助。

关于amazon-ec2 - 我如何在 AWS 中使用 IAM 来提供临时安全凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034090/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com