Я хочу предоставить временные учетные данные существующим пользователям, чтобы они могли получить доступ к Консоли управления AWS, предоставив им URL-адрес, созданный с помощью этих временных полномочия.Выдача временных учетных данных для входа в AWS Management Console с использованием AssumeRole, существующих политик и уникального URL-адреса
Я следую вместе с письменным примером, приведенным через AWS Документация: Example Code Using IAM Query APIs
Я написал следующий код, который не дает каких-либо ошибок при выполнении, и, похоже, возвращает маркер сеанса, который должен позволить я тогда правильно сформировать URL для входа
Вот код для возврата сеанса маркера, а затем URL:.
$accessKeyId = 'accesskeyId'
$secretAccessKey = 'secretaccessKey'
$region = 'us-east-1'
Set-AWSCredentials -AccessKey $accessKeyId -SecretKey $secretAccessKey
$role = Use-STSRole -RoleSessionName "testSTS" -RoleArn "arn:aws:iam::1234567890:role/adminAccess" -DurationInSeconds 900
$jsonSession = @"
{
"sessionId": $([string]::Format("{0}", $role.Credentials.AccessKeyId)),
"sessionKey": $([string]::Format("{0}", $role.Credentials.SecretAccessKey)),
"sessionToken": $([string]::Format("{0}", $role.Credentials.SessionToken))
}
"@
Add-Type -AssemblyName System.Web
$Encode = [System.Web.HttpUtility]::UrlEncode($jsonSession)
$url = $([string]::Format("https://signin.aws.amazon.com/federation?Action=getSigninToken&Session={0}", $Encode))
$payload = Invoke-WebRequest -Uri $url | ConvertFrom-Json
$issuer = [System.Web.HttpUtility]::UrlEncode("https://1234567890.signin.aws.amazon.com")
$destination = [System.Web.HttpUtility]::UrlEncode("https://console.aws.amazon.com")
$signintoken = [System.Web.HttpUtility]::UrlEncode($payload.SigninToken)
$signInUrl = $([string]::Format("https://signin.aws.amazon.com/federation?Action=login&Issuer={0}&Destination={1}&SigninToken={2}", $issuer, $destination, $signintoken))
write-host $signInUrl
к сожалению, когда я посещаю URL в веб-браузере я получаю followi ng error "Amazon Web Services Войти: учетные данные в вашей ссылке для входа были недействительными. Пожалуйста, обратитесь к администратору «
Это то, что URL вернулся ко мне выглядит, очевидно, я изменил AccountID и реальный маркер сеанса по соображениям безопасности:.
Дополнительно учетные данные и sessiontoken, переданные мне, работают при их использовании для выдачи команды API, как показано в приведенном ниже коде:
$accessKeyId = 'accesskeyId'
$secretAccessKey = 'secretAccessKey'
$region = 'us-east-1'
Set-AWSCredentials -AccessKey $accessKeyId -SecretKey $secretAccessKey
$role = Use-STSRole -RoleSessionName "testSTS" -RoleArn "arn:aws:iam::1234567890:role/adminAccess" -DurationInSeconds 900
$newAccessKeyId = $role.Credentials.AccessKeyId
$newSecretKey = $role.Credentials.SecretAccessKey
$newSessionToken = $role.Credentials.SessionToken
Set-AWSCredentials -AccessKey $newAccessKeyId -SecretKey $newSecretKey -SessionToken $newSessionToken
$secgroups = Get-EC2SecurityGroup
Обновлено: Я попытался удалить параметр «issuer», как предложено в статье, как указано ниже. Я также попытался добавить «SessionType» в исходный url для запроса sessiontoken, и URL-адрес signin все еще не с той же ошибкой.
Вы можете посмотреть на этом AWS форуме сообщение: https://forums.aws.amazon.com/thread.jspa?messageID=475106 –
Спасибо за ответ .. Эта статья для федеративных лексем , и я ищу использование AssumeRole. Однако он упомянул, что параметр «issuer» является необязательным, и он также имеет параметр «SessionType» для исходного запроса маркера сеанса. Я попробовал оба из них, и он по-прежнему терпел неудачу с той же ошибкой. знак равно –