当前位置: 首页 > wzjs >正文

郑州网站搜索排名网站建设优化工资高不

郑州网站搜索排名,网站建设优化工资高不,代帮企业做网站,蒲公英路由器登录地址大家好,很多朋友,特别是通过合作伙伴或服务商使用 AWS 的同学,可能会发现自己的 IAM Identity Center 功能受限,无法像在组织管理账户里那样轻松配置 CLI 的 SSO (aws configure sso)。那么,我们就要放弃治疗&#xff…

大家好,很多朋友,特别是通过合作伙伴或服务商使用 AWS 的同学,可能会发现自己的 IAM Identity Center 功能受限,无法像在组织管理账户里那样轻松配置 CLI 的 SSO (aws configure sso)。那么,我们就要放弃治疗,退回使用古老的、不安全的静态 IAM 用户密钥吗?

绝对不行!今天,我就教大家如何利用 AWS Cognito,在自己的单一账户内,从零开始打造一个支持 MFA 的 CLI 登录门户,彻底告别固定凭据的烦恼。
在这里插入图片描述

为什么是 Cognito?

在前面提到的场景下,我们需要的本质是一个“身份验证服务”,它能:

  1. 验证我就是我(最好带上 MFA)。
  2. 验证通过后,给我一个“临时通行证”(临时的 AWS STS 凭证)。
  3. 这个过程要能被 CLI 工具自动化。

Cognito 完美地满足了这三点。它就像一个为我们自己搭建的、轻量级的“迷你 IAM Identity Center”。

而另一个选项 AWS Managed Microsoft AD,虽然技术上也能通过 SAML 联合登录实现,但它是一个重量级且昂贵的解决方案,通常用于已经深度绑定微软生态的大型企业。对于个人或小团队在单一账户下的需求来说,完全是“杀鸡用牛刀”,成本和复杂度都太高了。

所以,我们的主角就是 Cognito

方案核心:Cognito 用户池 + 身份池 = 临时凭证生成器

这个方案的核心是 Cognito 的两大组件协同工作:

  1. Cognito 用户池 (User Pool): 我们的“用户数据库”。我们在这里创建用户,并为用户强制启用 MFA。它只负责认证(Authentication)——确认我们是谁。
  2. Cognito 身份池 (Identity Pool): 我们的“权限交换中心”。它信任来自用户池的已认证用户,并被授权可以为他们代领一个拥有特定权限的 IAM 角色(临时凭证)。它负责授权(Authorization)——决定我们能做什么。

整个流程就像这样:
CLI -> Cognito 用户池 (输入密码+MFA码) -> 获取身份令牌 -> Cognito 身份池 (用身份令牌交换) -> 获取临时 AWS 凭证 (Access Key, Secret Key, Session Token)

实战步骤:四步打造 CLI 登录系统
第 1 步:创建 Cognito 用户池 (用户中心)
  1. 进入 AWS Cognito 服务控制台,点击“创建用户池”。
  2. 在配置登录体验时,选择“Cognito user pool”作为提供商类型。
  3. 关键: 在“多重要素认证 (MFA)”部分,选择 “强制 (Required)”,并选择“验证器应用 (Authenticator apps)”作为 MFA 类型。这样就确保了所有登录行为都必须经过 MFA。
  4. 其他设置可以保持默认,完成用户池的创建。
  5. 在创建好的用户池中,进入“用户”标签页,手动创建一个用户(例如,dave)。首次登录时系统会要求我们设置密码和绑定 MFA 设备(如 Google Authenticator)。
第 2 步:创建 Cognito 身份池 (权限交换机)
  1. 再次进入 Cognito 控制台,切换到“联合身份池 (Federated Identities)”,点击“创建新的身份池”。
  2. 给身份池命名,然后展开“身份验证提供商”部分。
  3. 点击 “Cognito” 标签,输入我们上一步创建的用户池 ID应用客户端 ID
  4. 点击“创建池”。AWS 会提示我们为此身份池创建一个新的 IAM 角色。允许它创建!这个角色非常重要,它就是我们登录后最终“扮演”的角色。
第 3 步:配置 IAM 角色权限
  1. 进入 IAM 服务控制台,找到上一步为我们创建的那个 IAM 角色(通常名字里包含我们的身份池名称)。
  2. 这个角色默认权限很小。我们需要为它附加我们希望在 CLI 中拥有的权限策略。例如,如果我们希望拥有管理员权限,就附加 AdministratorAccess 策略。如果我们只想拥有 S3 的读写权限,就附加相应的策略。这是决定我们登录后能力范围的关键一步。
第 4 步:编写 CLI 登录脚本 (魔法发生的地方)

标准的 AWS CLI 没有内置 aws configure cognito 命令,所以我们需要一个小脚本来自动化这个登录流程。我们可以用任何我们喜欢的语言(Python, Bash, PowerShell)来写。

下面是一个使用 Python 和 Boto3 的简单示例 login.py

import boto3
import getpass
import configparser
import os# --- 配置Cognito信息 ---
USER_POOL_ID = 'us-east-1_xxxxxxxxx'  # 替换为我们的用户池ID
CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxx' # 替换为我们的用户池应用客户端ID
IDENTITY_POOL_ID = 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # 替换为我们的身份池ID
REGION = 'us-east-1' # 替换为我们的区域
ROLE_ARN = 'arn:aws:iam::123456789012:role/Cognito_YourIdentityPoolAuth_Role' # 替换为身份池为我们创建的角色ARN
# -----------------------------def get_cognito_tokens(username, password):client = boto3.client('cognito-idp', region_name=REGION)try:# 第一步:发起认证resp = client.initiate_auth(ClientId=CLIENT_ID,AuthFlow='USER_PASSWORD_AUTH',AuthParameters={'USERNAME': username,'PASSWORD': password,})# 第二步:处理MFA挑战if 'ChallengeName' in resp and resp['ChallengeName'] == 'SOFTWARE_TOKEN_MFA':mfa_code = input("请输入我们的MFA验证码: ")resp = client.respond_to_auth_challenge(ClientId=CLIENT_ID,ChallengeName='SOFTWARE_TOKEN_MFA',Session=resp['Session'],ChallengeResponses={'USERNAME': username,'SOFTWARE_TOKEN_MFA_CODE': mfa_code})return resp['AuthenticationResult']['IdToken']except client.exceptions.NotAuthorizedException:print("错误:用户名或密码不正确。")return Noneexcept Exception as e:print(f"发生未知错误: {e}")return Nonedef get_aws_credentials(id_token):client = boto3.client('cognito-identity', region_name=REGION)# 用ID Token从身份池获取身份IDidentity_id_resp = client.get_id(IdentityPoolId=IDENTITY_POOL_ID,Logins={f'cognito-idp.{REGION}.amazonaws.com/{USER_POOL_ID}': id_token})identity_id = identity_id_resp['IdentityId']# 用身份ID获取临时AWS凭证creds_resp = client.get_credentials_for_identity(IdentityId=identity_id,Logins={f'cognito-idp.{REGION}.amazonaws.com/{USER_POOL_ID}': id_token})return creds_resp['Credentials']def update_aws_config(credentials):aws_config_path = os.path.expanduser('~/.aws/credentials')config = configparser.ConfigParser()if os.path.exists(aws_config_path):config.read(aws_config_path)profile_name = 'cognito-sso' # 我们可以自定义profile名称if not config.has_section(profile_name):config.add_section(profile_name)config.set(profile_name, 'aws_access_key_id', credentials['AccessKeyId'])config.set(profile_name, 'aws_secret_access_key', credentials['SecretAccessKey'])config.set(profile_name, 'aws_session_token', credentials['SessionToken'])with open(aws_config_path, 'w') as configfile:config.write(configfile)print(f"凭证已成功更新到profile '{profile_name}' 中。")print("现在我们可以使用 'aws s3 ls --profile cognito-sso' 来测试了。")if __name__ == "__main__":username = input("请输入用户名: ")password = getpass.getpass("请输入密码: ")id_token = get_cognito_tokens(username, password)if id_token:credentials = get_aws_credentials(id_token)update_aws_config(credentials)

如何使用这个脚本:

  1. 安装 boto3: pip install boto3
  2. 将脚本中顶部的配置信息替换为我们自己的 Cognito 和 IAM 信息。
  3. 运行脚本:python login.py
  4. 按照提示输入用户名、密码和 MFA 码。
  5. 脚本会自动获取临时凭证,并写入到 ~/.aws/credentials 文件的一个新的 profile 中(例如 [cognito-sso])。
  6. 之后,我们所有的 AWS CLI 命令都可以通过 --profile cognito-sso 来使用这些临时凭证,例如 aws s3 ls --profile cognito-sso
结论:自己动手,丰衣足食

虽然我们无法使用组织级的 IAM Identity Center,但这并不意味着我们必须在安全上妥协。通过组合 Cognito 用户池和身份池,我们成功地为自己构建了一个轻量、安全、且支持 MFA 的 CLI 登录解决方案。

这个方案不仅解决了我们的燃眉之急,更让我们深入理解了 AWS 身份联邦的强大能力。当我们需要为我们的应用程序或团队成员提供安全的 AWS 资源访问时,这套思路同样适用。


文章转载自:

http://jBdeV8pw.krdmn.cn
http://ZDQXjRDN.krdmn.cn
http://ebbgVslO.krdmn.cn
http://BlK4eUCR.krdmn.cn
http://7Fv8qY6q.krdmn.cn
http://xK7x3VtJ.krdmn.cn
http://gHkJXuEm.krdmn.cn
http://SPB2tlBl.krdmn.cn
http://0HIH5yJD.krdmn.cn
http://GGwqwTh4.krdmn.cn
http://rzlyO6hd.krdmn.cn
http://WiasEE2h.krdmn.cn
http://hTsDpawK.krdmn.cn
http://QtZmHEtm.krdmn.cn
http://EN0J1qY6.krdmn.cn
http://xepQ7Rad.krdmn.cn
http://z2uTSRok.krdmn.cn
http://DxNb5Nux.krdmn.cn
http://CK5lTrIf.krdmn.cn
http://6MhXixCm.krdmn.cn
http://s0zuChkW.krdmn.cn
http://y7yXOWaO.krdmn.cn
http://FVvjuyjZ.krdmn.cn
http://kTHvDmUV.krdmn.cn
http://4nu6ewc9.krdmn.cn
http://9mv2GB3c.krdmn.cn
http://AQ6jcWWx.krdmn.cn
http://irtbdTV3.krdmn.cn
http://DXCXodcn.krdmn.cn
http://sTlfF34r.krdmn.cn
http://www.dtcms.com/wzjs/735510.html

相关文章:

  • 企业产品展示网站源码自己有主机怎么做论坛网站
  • 南通网站建设总结高端制造股十大龙头
  • 毕节市城乡建设局网站整合网络营销外包
  • 网站建设的平面设计wordpress 500 - 内部服务器错误
  • 深圳企业网站建设制作企业seo顾问服务公司
  • 四川住房与城乡建设厅网站做网站都需要什么软件
  • 南昌易动力网站建设公司网站建设设计指标
  • 快速做自适应网站湖南3合1网站建设公司
  • 阿里虚拟主机怎么做两个网站搞定设计在线制作
  • 做的网站必须备案苏州市工程造价信息网
  • 辽宁住房和城乡建设厅网站软文营销案例
  • 浏阳网站建设两性做受技巧视频网站
  • 东营做网站的公司wordpress新建功能页面
  • 手机版网站有必要吗免费创建网站教程
  • 为什么一个网站外链那么多最新热搜新闻事件
  • 网站开发的收获与体会巨量引擎官网
  • 网站设计原则有哪些咸阳今天的新消息
  • 推广计划名称推动防控措施持续优化
  • 做折扣的网站深圳可以做网站的公司
  • 免费微商城网站建设成品网站w灬源码伊甸3m8u
  • 免费看电视的网站有哪些艺术风格网站
  • 帝国cms怎么做电影网站外贸公司英文网站
  • 网站定制开发哪家做的好asp net mvc做网站
  • 浙江城乡建设部网站首页黄冈网站推广软件下载
  • 吉林省软环境建设网站专业做网站推广
  • 网页设计与网站建设在线考试1怎么做自动下单网站
  • 柬埔寨做网站网站wordpress碎语插件
  • 中国开发网站的公司语言网站开发企业
  • 完全菜鸟七天学会建网站网页设计与制作实训总结报告
  • 百度站长平台申请提交链接线上小程序制作