我想为 Terraform 执行 MFA,因此期望从我的虚拟 MFA 设备中为每个terraform [command]. 阅读文档后:
cli-roles
terraform mfa
我创建了一个角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[ACCOUNT_ID]:user/testuser"
},
"Action": "sts:AssumeRole",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
该用户默认强制使用 MFA,我为他配置了虚拟 MFA 设备。
~/.aws/凭证:
[default]
...
[terraform_role]
role_arn = arn:aws:iam::[ACCOUNT_ID]:role/terraform-test-role
source_profile = default
mfa_serial = arn:aws:iam::[ACCOUNT_ID]:mfa/testuser
Run Code Online (Sandbox Code Playgroud)
在我的 Terraform 环境中,我放置了以下内容:
provider "aws" {
profile = "terraform_role"
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行terraform plan它时会抛出一个错误:
Error refreshing state: 1 error(s) occurred:
* provider.aws: No …Run Code Online (Sandbox Code Playgroud) I want to secure my API with Multi-factor-Authentication on top of Auth Token/JWT. I have been searching but couldn't find any package that can work with drf. I am thinking to write my own django app. Any comments on what should be the architecture ?
我想到的一个解决方案是引入令牌基础架构。如果用户正在访问受 mfa 保护的 api,那么请求实例应该与令牌一起保存,并且应该向他的手机发送一条短信(如果手机作为 mfa ) 并且响应应该是那个标记。然后应该向mfa端点发出另一个请求token and mfa-code。一旦验证,我们将获取他之前的请求对象并完成请求。
django restful-architecture two-factor-authentication django-rest-framework multi-factor-authentication
在基本身份验证下,您过去可以将凭据存储在变量中
$cred = Get-Credential
Run Code Online (Sandbox Code Playgroud)
现在我们使用的是 Modern Auth,我们的多因素身份验证是 Duo。
如何将 MFA 凭据存储到变量中,以便将它们插入脚本中?
例子
$mfacred = *whateverthecodeis*
Connect-MsolService -Credential $mfacred
Connect-AzureAD -Credential $mfacred
Run Code Online (Sandbox Code Playgroud)
编辑 我不想绕过 MFA,我想提示它并以脚本的其余部分可以使用凭据和令牌的方式存储凭据和令牌。
variables powershell credentials multi-factor-authentication
要使用 MFA(在 SSMS 中作为“Active Directory - Universal”)连接到 Azure SQL 数据库,Microsoft 建议并且目前只有使用 Microsoft.IdentityModel.Clients.ActiveDirectory 与 C# 连接的教程
Authentication='Active Directory Interactive';从 Python 或 Powershell设置常规 ODBC 连接字符串会导致错误
Cannot find an authentication provider for 'ActiveDirectoryInteractive'
Run Code Online (Sandbox Code Playgroud)
这似乎是因为根据https://docs.microsoft.com/en-us/azure/sql-database/active-directory-interactive-connect-azure-sql-db 上的Microsoft 示例代码,您需要明确创建自己的创建连接时的身份验证提供程序类:
public static void Main(string[] args)
{
var provider = new ActiveDirectoryAuthProvider();
SC.SqlAuthenticationProvider.SetProvider(
SC.SqlAuthenticationMethod.ActiveDirectoryInteractive,
//SC.SqlAuthenticationMethod.ActiveDirectoryIntegrated, // Alternatives.
//SC.SqlAuthenticationMethod.ActiveDirectoryPassword,
provider);
Program.Connection();
}
Run Code Online (Sandbox Code Playgroud)
我想与pyodbc 连接,所以我无法实现ActiveDirectoryInteractive 提供程序。
有什么方法可以使用 OAuth 获取令牌并在连接字符串中使用它,或者在不使用 .NET 的情况下以其他方式实现 ActiveDirectoryInteractive 提供程序?
odbc azure pyodbc azure-sql-database multi-factor-authentication
我正在尝试将我的 AWS CLI 设置为使用 MFA 承担一个角色,并在 15 分钟后使凭证过期(显然,允许的最小duration_seconds)。
我的 IAM 角色政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/myuser"
},
"Action": "sts:AssumeRole",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
},
"NumericLessThan": {
"aws:MultiFactorAuthAge": "900"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的 CLI 配置设置如下:
[profile xxx]
role_arn = arn:aws:iam::XXXXXXXXXXXX:role/mfa
mfa_serial = arn:aws:iam::XXXXXXXXXXXX:mfa/foobar
source_profile = mfa
Run Code Online (Sandbox Code Playgroud)
当我使用xxx上面的配置文件运行命令时,第一次询问 MFA 并且对所有后续请求保持有效。但是,15 分钟后,令牌仍然有效并且不会再次询问 MFA。
[profile xxx]
role_arn = arn:aws:iam::XXXXXXXXXXXX:role/mfa
mfa_serial = arn:aws:iam::XXXXXXXXXXXX:mfa/foobar
source_profile = mfa
Run Code Online (Sandbox Code Playgroud)
我尝试duration_seconds在我的 CLI …
在Azure门户上启用了多因素身份验证,并且每当我登录到Dynamics 365时它将发送OTP。我想在C#控制台应用程序中使用MFA登录。
c# azure azure-active-directory dynamics-crm-365 multi-factor-authentication
如何强制 AWS IAM 用户使用 MFA,但允许他们在首次登录时更改密码?
如果您遵循AWS 文档并强制执行 MFA,新用户在首次获得账户时将无法更改密码。
我知道您可以强制执行 MFA,也可以不强制执行 MFA ,并允许用户管理自己的密码和凭据。此外,AWS 有一种方法可以解决该问题,但不建议这样做:
此示例策略不允许用户在登录时重置密码。新用户和密码过期的用户可能会尝试这样做。您可以通过将 iam:ChangePassword 添加到语句 DenyAllExceptListedIfNoMFA 来允许此操作。但是,IAM 不建议这样做。允许用户在没有 MFA 的情况下更改密码可能会存在安全风险。
那么“推荐”的方式是什么呢?
这个问题也在AWS论坛上被问到,但没有真正的答案。
我们的网站可以从桌面和移动设备打开。当用户在桌面上设置 MFA 时,他们可以使用手机摄像头直接从 PC 屏幕扫描 QR 码。但是,当他们登录移动设备时,他们很难在当前使用的同一设备上扫描二维码。我在帐户设置中检查了 Google 的做法(通过 Android 上的 Chrome 登录):
因此,默认情况下,他们建议扫描二维码,但当我单击“我不能”时,他们建议我自己复制粘贴秘密。
但为了确保他们跟踪用户是从移动设备登录的,为什么他们不只显示 otpauth:// 链接呢?我尝试在我的应用程序中执行此操作,它的工作方式就像一个魅力(至少在 Android 上,现在无法在 iPhone 上检查,但如果您有机会在 iPhone 上测试它,这里有一个示例链接):
otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite
upd:SOF 不会使其可点击 - 一定是出于安全原因,但在我的网站上我可以毫无问题地执行此操作。当选中“请求桌面站点”复选框时,将其包装到 Android 上的 Chrome 中的代码片段中即可:
<a href="otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite">otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite</a>Run Code Online (Sandbox Code Playgroud)
点击它,Android 会建议我可以使用 Microsoft 或 Google 身份验证器,这意味着 Google 的应用程序支持此技巧。我还安装了 LastPass,但那个并没有弹出。
在我看来,这个解决方案对用户更加友好,并且很好奇为什么谷歌不允许用户这样做?一定有一些我没有考虑到的陷阱吗?
android one-time-password google-authenticator totp multi-factor-authentication
我有一个 React Web 应用程序(利用 aws-amplify),它连接到 AWS Cognito 用户池进行身份验证。
我的应用程序的用户可以选择从设置中启用 SMS MFA。
我尝试使用aws amplify npm 包启用 SMS MFA ,但遇到错误
{
"__type": "InvalidParameterException",
"message": "User does not have delivery config set to turn on SMS_MFA"
}
Run Code Online (Sandbox Code Playgroud)
我已在 AWS Cognito 用户池设置中将 MFA 设置为“可选”,如下面的屏幕截图所示。
这是我的组件逻辑
import React, { useState, useEffect } from 'react';
import { Card, Grid, Typography, Box, Switch } from '@material-ui/core';
import { Auth } from 'aws-amplify';
const Profile = () => {
const [currentUser, setCurrentUser] = useState(null);
// use …Run Code Online (Sandbox Code Playgroud) sms reactjs amazon-cognito aws-amplify multi-factor-authentication
我正在尝试在我的 Web 应用程序中添加 MFA,但缺少multiFactor属性。检查代码:
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.6.2/firebase-app.js";
import { getAuth, RecaptchaVerifier, PhoneAuthProvider, signInWithEmailAndPassword }
from "https://www.gstatic.com/firebasejs/9.6.2/firebase-auth.js";
const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
auth.onAuthStateChanged((user) => {
const userEl = document.getElementById('user');
if (user) {
userEl.innerHTML = `${user.email} logged in. ${JSON.stringify(
user.multiFactor.enrolledFactors
)}`;
} else {
userEl.innerHTML = 'signed out';
}
});
window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', {
'size': 'invisible',
'callback': (response) => {
console.log('captcha solved!');
}
}, auth);
const enrollBtn …Run Code Online (Sandbox Code Playgroud) javascript firebase firebase-authentication multi-factor-authentication
multi-factor-authentication ×10
azure ×2
amazon-iam ×1
android ×1
aws-amplify ×1
aws-cli ×1
c# ×1
credentials ×1
django ×1
firebase ×1
javascript ×1
odbc ×1
powershell ×1
pyodbc ×1
reactjs ×1
sms ×1
terraform ×1
totp ×1
variables ×1