“aws_security_token”的用途是什么

kga*_*lli 3 amazon-s3 amazon-web-services pre-signed-url

我想将预签名 URL 与 AWS S3 结合使用。我注意到预签名 URL 包含aws_access_key_idaws_security_token.

根据我的理解,它aws_security_token是 URL 的一部分,因为我使用的是临时安全凭证,并且它是正确签署 URL 所必需的。

但是,给前端客户端提供 URL 来下载图像是否可以?是aws_security_tokenURL 的一部分(未加密)。我担心安全性,并且无法弄清楚令牌的用途是什么。以及攻击者可以用 myaws_access_key_idaws_security_token.

Bru*_*sky 6

2014 年,亚马逊AWS_SECURITY_TOKEN转向AWS_SESSION_TOKEN,你也应该青睐后者。许多项目仍然要么设置要么检查两者,但已经过去了 5 年。我想我们可以放手了。

aws sts assume-role命令只返回SessionToken所以,我只在我编写的代码中支持它。

以下是使用 aws cli 的示例:

function mfa_serial(){
    aws configure get --profile=$1 mfa_serial
}

function role_arn(){
    aws configure get --profile=$1 role_arn
}

function assrole(){
    aws sts assume-role                         \
        --role-arn          "$(role_arn   $1)"  \
        --serial-number     "$(mfa_serial $1)"  \
        --token-code        "$(mfa)"            \
        --role-session-name "$( ( id -un; date +-%Y-%m-%d+%H.%M.%S ) | tr -d '\n' )"
}

assrole development
Run Code Online (Sandbox Code Playgroud)

这是输出:

{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROAIWL33TL33TL33TL33:brunobronosky",
        "Arn": "arn:aws:sts::485548554855:assumed-role/allow-full-access-from-other-accounts/brunobronosky"
    },
    "Credentials": {
        "SecretAccessKey": "L33TL33TL33TL33TL33TL33TL33TL33TL33TL33T",
        "SessionToken": "L33TL33TL33TEI///////////L33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33Tm9/TL33TL33TL33TL33T/TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33Tz9/TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TS/TL33TL33TL33TL33TL33TL33TL33TL33TL33T/TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33TL33Tos/TL33TL33TL33TL33TL33TL33TL33T/A==",
        "Expiration": "2019-11-01T00:00:00Z",
        "AccessKeyId": "ASIAL33TL33TL33TL33T"
    }
}
Run Code Online (Sandbox Code Playgroud)