STS 和 IAM 齐头并进,使用起来非常简单。由于您没有给出用例,请允许我在开始编码之前解释一些事情。
注意:我用PHP编写代码,SDK版本是3。
STS 的想法是创建一些tokens,它允许持有者在您(所有者或受让人)不损害您自己的凭据的情况下执行某些操作。您将使用哪种类型的 STS 取决于您想要做什么。 Possible actions are listed here.
例如 1:通常,您使用 AssumeRole 进行跨账户访问或
联邦。假设您拥有多个帐户并需要访问
每个帐户中的资源。您可以在
每个帐户都可以访问这些资源。但是,管理所有这些
凭据并记住哪个可以访问哪个帐户可以
耗时的。相反,您可以创建一组长期
一个帐户中的凭据,然后使用临时安全凭据
通过担任这些帐户中的角色来访问所有其他帐户。
E.g.2:通常,如果您想使用 MFA 来保护您,请使用 GetSessionToken
对特定 AWS API 的编程调用,例如 Amazon EC2 StopInstances。
假设您有一个 IAM 用户,并且您想为该用户创建许多临时凭证,每个凭证的时间范围为 15 分钟。然后你将编写以下代码:
$stsClient = \Aws\Laravel\AwsFacade::createClient('sts', array(
'region' => 'us-east-1'
));
$awsTempCreds = $stsClient->getSessionToken(array(
'DurationSeconds' => 900
));
注意事项:
- IAM 用户创建的凭证在您指定的持续时间内有效,从 900 秒(15 分钟)到最长 129600 秒(36 小时),默认为 43200 秒(12 小时);使用帐户凭据创建的凭据的范围从 900 秒(15 分钟)到最长 3600 秒(1 小时),默认为 1 小时。
- 在上面的示例中,我使用
AWS Facade 获得了 $stsClient,它是 Laravel 框架的一部分。如何通过传递凭据获取$stsClient 取决于您。阅读此installation guide,了解如何实例化您的$stsClient。
- 由于
STS 是一个全局资源,即它不需要您位于特定区域,因此您必须始终将区域设置为us-east-1。如果您的区域设置为其他任何内容,您将收到 should be scoped to a valid region, not 'us-west-1' 之类的错误。
- 您制作的临时凭证数量没有限制。
- 这些凭据将具有与派生它们的
Account/IAM 相同的权限。
以上代码为 AWS 账户或 IAM 用户返回一组临时凭证。凭据包括访问密钥 ID、秘密访问密钥和安全令牌,以及一些其他信息,例如到期时间。
您现在可以将这些临时凭据提供给其他人。假设我把这个给了我碰巧使用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>
这个脚本有什么作用?
- 使用临时凭据创建新客户端。
- 使用
Multipart Upload 将一个非常大的文件(超过100MB)上传到mybucket。
同样,只要您的临时凭证有权执行此操作,您就可以对任何 AWS 资源执行操作。希望这会有所帮助。