Category: News
Link is stripped from email in Workflow
I have created email notifications whenever a message is posted to channels in teams. In the email notification I am trying to paste a link to corresponding channel, but after I save the link gets stripped out whenever I go back in to edit it or review something again. Is there something special I need to do to keep the link from being stripped out? The text I used to anchor the link stays, but the link is removed.
I have created email notifications whenever a message is posted to channels in teams. In the email notification I am trying to paste a link to corresponding channel, but after I save the link gets stripped out whenever I go back in to edit it or review something again. Is there something special I need to do to keep the link from being stripped out? The text I used to anchor the link stays, but the link is removed. Read More
Users not on account getting notifications
We have multiple users with separate accounts. Within the past week or so, users are getting notifications for Bookings calendars they are not even apart of. Anyone else experiencing this?
We have multiple users with separate accounts. Within the past week or so, users are getting notifications for Bookings calendars they are not even apart of. Anyone else experiencing this? Read More
Function for finding percentage of sum
What function do I use and how do I write it when trying to find the percentage of: (A10+A11)/5?
What function do I use and how do I write it when trying to find the percentage of: (A10+A11)/5? Read More
Canging sender without loosing the whole e-mail
I started using the New Outlook today. In the desktop app, I use my private and my work e-mail.
I got an e-mail on my private address that I wanted to answer with my work address. So I went to ‘From’ and clicked my work address. Instead of just changing the sending e-mail address (and keeping everything else), it opened a new window with a completely empty e-mail (with my work address as the sender). So now I had to manually copy-paste everything (the message I wanted to answer, the people I wanted to send it to, the subject line) from one screen to the other…
On the old Outlook I could just change the sender as easily as I could change receivers…
I started using the New Outlook today. In the desktop app, I use my private and my work e-mail.I got an e-mail on my private address that I wanted to answer with my work address. So I went to ‘From’ and clicked my work address. Instead of just changing the sending e-mail address (and keeping everything else), it opened a new window with a completely empty e-mail (with my work address as the sender). So now I had to manually copy-paste everything (the message I wanted to answer, the people I wanted to send it to, the subject line) from one screen to the other…On the old Outlook I could just change the sender as easily as I could change receivers… Read More
Marketplace Customer Office Hours: the marketplace + Azure, August 8th, at 8:30 am
Our customer office hours series is an opportunity for both customers and partners who want to understand customer FAQs. In this upcoming session focused on the marketplace + Azure, customers will get guidance on how to align Azure investments to the marketplace to help their organizations increase efficiency and spend smarter.
Register today for the marketplace + Azure.
Our customer office hours series is an opportunity for both customers and partners who want to understand customer FAQs. In this upcoming session focused on the marketplace + Azure, customers will get guidance on how to align Azure investments to the marketplace to help their organizations increase efficiency and spend smarter.
Register today for the marketplace + Azure. Read More
Cannot assign SMTP service to certificate
Hi,
is this a place to ask for support? Not sure, it’s called “conversations”… 🙂
My problem is that I cannot assign SMTP service to my freshly installed Letsencrypt certificate (new installation of Exchange 2019 on Server 2022 core). I ran automated win-acme client and the certificate now is visible in EAC. All seems to be fine so far. Now I try to assign IIS and SMTP service, but this only works for IIS service. The assignment for SMTP is not retained without any message appearing. I have tried it via EMS, no difference. Can anyone help?
Regards,
Stefano
Hi, is this a place to ask for support? Not sure, it’s called “conversations”… 🙂 My problem is that I cannot assign SMTP service to my freshly installed Letsencrypt certificate (new installation of Exchange 2019 on Server 2022 core). I ran automated win-acme client and the certificate now is visible in EAC. All seems to be fine so far. Now I try to assign IIS and SMTP service, but this only works for IIS service. The assignment for SMTP is not retained without any message appearing. I have tried it via EMS, no difference. Can anyone help? Regards,Stefano Read More
Enhancements to the Outbound Messages in Transit Security Report
Today, we are excited to announce enhancements to the Outbound Messages in Transit Security report that help you track and optimize the security of your outbound email.
To help you identify and reduce the number of emails that are sent in plain text, we have added two new elements to the outbound messages in transit report: a new field in the Messages Sent section, and a new page called Recipient Domains Not Supporting TLS.
We have split the ‘Opportunistic TLS’ category in the Messages Sent section of the mail flow report into 2 categories: ‘TLS’ and ‘No-TLS’ so there are now 5 security categories.
With the addition of Recipient Domains Not Supporting TLS, the Outbound Messages in Transit Security report now has 3 views:
The Messages Blocked section compiles data for tenant admins on any SMTP DANE with DNSSEC or MTA-STS issues encountered during attempts to send messages to domains that use these security protocols.
The Messages Sent section provides time-series data for emails secured by SMTP DANE with DNSSEC, MTA-STS, Both SMTP DANE with DNSSEC and MTA-STS, TLS, or No-TLS.
Recipient Domains Not Supporting TLS provides time series data for messages that were sent to a destination domain unencrypted (in plain text) because the destination didn’t support TLS. Exchange Online always attempts to send using TLS, but if the destination server or domain doesn’t support it then the default behavior is to send the email.
How to access the new features
These updates are available right now! To access the report, go to the Exchange admin center, and then click Reports > Mail flow. Once the page loads, select Outbound Messages in Transit Security report.
To learn more about the report, visit Outbound messages in Transit Security report in the Exchange Admin Center for Exchange Online | Microsoft Learn
How to use the data to improve your email security
The data in the Outbound Messages in Transit Security report can help you monitor and improve email security in several ways. Here are some examples of how you can use the data:
If you see a high number of emails sent in plain text to an organization, you can contact the receiving organization and ask them to enable TLS on their email servers.
If you see a sudden spike in the number of emails experiencing SMTP DANE with DNSSEC or MTA-STS failures, you can alert the destination organization, so they take corrective measures.
If you see a consistent pattern of emails being blocked or sent in plain text to certain domains, you can consider alternative ways of communicating with those domains. For example, you can use secure file sharing services or secure web portals to exchange information with those domains.
We hope that you will find these enhancements helpful. If you have any feedback or suggestions, please let us know in the comments below!
Microsoft 365 Messaging Team
(Formerly Exchange Online Transport Team)
Microsoft Tech Community – Latest Blogs –Read More
Leveraging Azure DDoS protection with WAF rate limiting
Introduction
In an increasingly interconnected world, the need for robust cybersecurity measures has never been more critical. As businesses and organizations migrate to the cloud, they must address not only the conventional threats but also more sophisticated ones like Distributed Denial of Service (DDoS) attacks. Azure, Microsoft’s cloud computing platform, offers powerful tools to protect your applications and data. In this blog post, we will explore how to leverage Azure DDoS Protection in combination with Azure Web Application Firewall (WAF) rate limiting to enhance your security posture.
Understanding DDoS Attacks
Distributed Denial of Service attacks are a malicious attempt to disrupt the normal functioning of a network, service, or website by overwhelming it with a flood of internet traffic. These attacks can paralyze online services, causing severe downtime and financial losses. Azure DDoS Protection is a service designed to mitigate such attacks and ensure the availability of your applications hosted on Azure.
Combining Azure DDoS Protection with WAF Rate Limiting
While Azure DDoS Protection can mitigate many types of attacks, it’s often beneficial to combine it with a Web Application Firewall for comprehensive security. Azure WAF provides protection at the application layer, inspecting HTTP/HTTPS traffic and identifying and blocking malicious requests. One of the key features of Azure WAF is rate limiting, which allows you to control the number of incoming requests from a single IP address or Geo location. By setting appropriate rate limiting rules, you can mitigate application-layer DDoS attacks.
In this article, we will delve into DDoS protection logs, exploring how to harness this valuable data to configure rate limiting on the Application Gateway WAF. By doing so, we fortify our defenses at various layers, ensuring a holistic approach to DDoS protection.
Note: Rate limiting for Application gateway WAF is currently in GA, you can find more information here Azure Web Application Firewall (WAF) rate limiting | Microsoft Learn
Example Attack scenario
In this scenario, we outline a two-phase DDoS (Distributed Denial of Service) attack for illustration purposes. The attacker initiates with a Layer 4 TCP SYN flood attack by a bot network. This targets the network infrastructure with a flood of TCP (Transmission Control Protocol) SYN packets, primarily targeting Layer 4, the transport layer. The objective is to overwhelm network resources, including bandwidth and processing capacity, disrupting access for legitimate users. Azure DDoS Protection detects and mitigates this Layer 4 attack.
Subsequently, attackers transition to Phase 2, launching a Layer 7 (L7) DDoS attack with the same bot network. Here, the focus shifts to Layer 7, the application layer. In this scenario, they deploy a Layer 7 flood attack, exploiting application-level vulnerabilities in the target application. The goal remains consistent: disrupting the target’s application by leveraging Layer 7 weaknesses. Real-world DDoS attacks may employ various vectors, depending on application vulnerabilities. Azure DDoS Protection, combined with complementary security measures like Web Application Firewall (WAF) rate limiting, forms a robust defense against these attacks, ensuring service continuity and protection against evolving DDoS tactics.”
Note: In our testing environment, we’re using spoofed Layer 4 DDoS attacks instead of those carried out by a bot network. In actual real-world situations, the attack vectors can vary widely, adapting to the specific vulnerabilities and targets. In this scenario, we assume that the attackers use the same source IPs since they are focused on launching attacks in quick succession and do not expect the target to respond quickly enough. This scenario serves as a simplified representation to highlight the importance of multi-layered defenses and the role of Azure DDoS Protection and WAF rate limit in mitigating DDoS attacks.
Prerequisites
Set up an Application Gateway with the WAF V2 SKU and select the latest WAF engine by choosing CRS 3.2 as the default rule set.
Associate a public IP address with your application gateway and activate Azure DDoS Protection (Network or IP SKU).
Ensure that logging is enabled for your public IP resource and on your Application Gateway.
Setting up DDoS protection
Ensure that Azure DDoS Protection is activated for your application gateway’s public IP. You can do this by navigating to the public IP address resource and verifying that DDoS protection is correctly configured.
To enable logging for your public IP address, access your public IP resource. Within the Diagnostic settings, create a new diagnostic configuration. Ensure that you select the DDoS logs categories and specify your preferred destination log analytics workspace.
Investigating and understanding Azure DDoS protection logs
Navigate to your log analytics workspace logs and run the following query to confirm that your public IP endpoint was under active DDoS mitigation:
AzureDiagnostics
| where Category == “DDoSProtectionNotifications”
Note: Azure DDoS protection logs are generated only during active DDoS mitigation.
As shown below, there’s a log type called “MitigationStarted,” confirming the occurrence of a DDoS attack. The message field provides details about the targeted public IP.
Next, let’s determine the source IPs responsible for this DDoS attack. Run the following query:
AzureDiagnostics
| where Category == “DDoSMitigationFlowLogs”
| where Message <> “Packet was forwarded to service”
| project Message, SourceIPAddress = tostring(sourcePublicIpAddress_s)
| summarize LogCount = count() by Message, SourceIPAddress
| order by LogCount desc
This query filters Azure Diagnostics logs for “DDoSMitigationFlowLogs,” extracts log messages and source IP addresses, and summarizes how many times each unique combination of message and source IP address appears in the logs. The results are sorted in descending order of log counts.
In the query results below, we see that the highest log counts contain the message ‘protocol violation invalid TCP syn,’ indicating that this traffic was identified as malicious by the DDoS mitigation system
Another method for identifying malicious source IPs in DDoS attacks is by utilizing the Sentinel DDoS Protection solution. This solution includes two analytical rules, triggering incidents when specific thresholds are reached. I’ve implemented the PPS threshold, which led to the incident described below.
As illustrated, the entities displayed represent the source IPs detected during this DDoS mitigation, aligning with the source IPs previously identified through the logs query.
For additional details on the Sentinel DDoS Protection solution, see here Azure DDoS Solution for Microsoft Sentinel – Microsoft Community Hub
Configuring rate limit on Application gateway WAF
Now that we have pinpointed the malicious source IPs behind the DDoS attacks, we can employ this data to set up rate limiting in our Web Application Firewall (WAF). Rate limiting is configured through custom rules, and you have the flexibility to attach the policy either globally to your Application Gateway or on a per-site/URI basis. For instance, if your Application Gateway serves four distinct sites and you wish to tailor the WAF configuration for each site, you can attach different policies to individual listeners to accommodate site-specific WAF settings. For further details. For more information, see here Configure per-site WAF policies using PowerShell – Azure Web Application Firewall | Microsoft Learn
Within the custom rules section, create a new rule and select ‘rate limit’ as the rule type. Here, you have the flexibility to choose the rate limit duration, ranging from 1 to 5 minutes, as well as the rate limit request threshold, which defines the maximum number of requests permitted within the specified rate limit duration. Given that we have identified the source IPs, choose ‘client address’ as the group rate limit traffic option. In the ‘conditions’ section, choose the match type ‘IP address,’ and then add the identified malicious IP addresses.
Note: While it is possible to configure a complete block on the identified IP addresses, it’s worth noting that attackers occasionally compromise legitimate users’ machines to launch DDoS attacks. Therefore, we opt for rate limiting to avoid outright blocking, allowing for a more nuanced approach to security.
The optimal rate limit setting depends on your specific environment and traffic patterns. One useful metric to guide you is the ‘WAF Total Requests’ found under your Application Gateway instance metrics. By selecting this metric and extending the timeline to at least 30 days, you can gather more comprehensive data to make an informed decision. Another method of rate limiting you can utilize with this information is to group by ‘None’ instead of ‘ClientAddr’ or ‘GeoLocation’. This approach groups all traffic together and counts it against the threshold of the rate limit rule you set up. Since the metric shows total WAF requests, you can use this group-by option to set the threshold against all traffic without maintaining counters for each client IP address or geography. Keep in mind that this is a powerful setting, and you should be careful when configuring it, as it could block legitimate traffic to your resources.
As an alternative approach, you have the option to set up rate limiting based on geo-location, which clusters traffic based on the geographical origin of their source IP addresses. By using the Azure DDoS Protection mitigation logs, you can pinpoint the countries from which the attacks originate and subsequently fine-tune your rate limiting rules accordingly. To find the post-mitigation logs, run the query below:
AzureDiagnostics
| where Category == “DDoSMitigationReports”
| where ReportType_s == “Post mitigation”
By leveraging the Post-Mitigation Report logs, you gain valuable insights into the countries of origin for the source IPs, along with other useful details such as top source ASNs (Autonomous System Numbers), top continents, drop reasons, and protocols. This information can be used in configuring rate limiting based on geographic locations, utilizing the top source countries data.
Investigating WAF metrics and logs
Navigate to your Application Gateway metrics tab and add these two metrics, “WAF Total Requests” and “ WAF Custom Rule Matches”, to get a view on total requests inspected by WAF and the custom rules hit. As you can see below there’s an increase in matched custom rules due to rate limiting
To confirm that rate limiting is actively working, we can investigate WAF logs by running the following query:
AzureDiagnostics
|where Category == “ApplicationGatewayFirewallLog”
|where priority_d == 30 //Replace 30 with your rate limiting custom rule priority
Benefits from combining Azure DDoS Protection with Azure Web Application Firewall rate limiting
Comprehensive Protection: You have multi-layered security, addressing both network-level and application-level threats.
Customization: You can fine-tune your rate limiting rules to suit your application’s unique requirements.
Visibility: Azure provides detailed traffic telemetry and analytics, allowing you to gain insights into potential threats.
Rate limiting on Azure Front Door WAF
The concepts explained for Application Gateway rate limiting in this post are also applicable to Azure Front Door WAF rate limiting. Azure Front Door (AFD) offers rate limiting capabilities as part of its Web Application Firewall (WAF) features. This allows you to control the number of requests a user can make to your application within a set time frame, effectively protecting against Layer 7 DDoS attacks. The rate limiting is configured through custom WAF rules, where you can specify the threshold for the number of web requests allowed from each socket IP address within a period of one or five minutes. Additionally, you can set up multiple rate limits for different paths within your application to ensure comprehensive protection.
This approach ensures that the rate limiting strategies discussed for Application Gateway in this blog post are equally applicable and effective when implemented on Azure Front Door WAF, offering a robust solution for your application’s security needs
Conclusion
Protecting your applications and data from DDoS attacks is a top priority in today’s digital landscape. Azure DDoS Protection, combined with Azure Web Application Firewall rate limiting, offers a powerful defense strategy. By implementing these services on either Application Gateway or Azure Front Door, you can protect your resources, maintain high availability, and provide a secure online experience for your users.
Resources
Rate Limiting Feature for Azure WAF on Application Gateway now in Preview. – Microsoft Community Hub
Application DDoS protection – Azure Web Application Firewall | Microsoft Learn
Azure DDoS Solution for Microsoft Sentinel – Microsoft Community Hub
Configure Azure DDoS Protection diagnostic logging through portal | Microsoft Learn
Microsoft Tech Community – Latest Blogs –Read More
Cannot open file anymore when converting Nifti to DICOM
I have a script where I convert MRI nifti files to DICOM. This used to work but now I get an error when trying to create a new folder and saving the converted files into that folder:
First steps work (Part I):
%% load data
% REVISIT – adapt all text between ‘apostrophes’
patientID = ‘patient180’; % this is the folder with the specific patient data
patientIn = fullfile(‘7Tseg_Brainlab’, patientID); % this is the folder where the patient folders are in
patientFolder = fullfile… % this is the whole path to the patientIn folder
(‘here is whole path’,patientIn);
addpath(genpath(patientIn));
dicom_template = ‘00501_3D_TSE_0.7mm’; % this is the original dicom that is used for the new dicom header
Then with this part I get an error (Part II):
% note: the [space] before the second ‘ after the names is necessary,
% otherwise you will get an error
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘LmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description LmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom );
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘RmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description RmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom);
So what I want is 2 folders, named ‘LmSTN’ and ‘RmSTN’. This used to work and now I get the error saying ‘Cannot open file’, but I do use the correct path.I have a script where I convert MRI nifti files to DICOM. This used to work but now I get an error when trying to create a new folder and saving the converted files into that folder:
First steps work (Part I):
%% load data
% REVISIT – adapt all text between ‘apostrophes’
patientID = ‘patient180’; % this is the folder with the specific patient data
patientIn = fullfile(‘7Tseg_Brainlab’, patientID); % this is the folder where the patient folders are in
patientFolder = fullfile… % this is the whole path to the patientIn folder
(‘here is whole path’,patientIn);
addpath(genpath(patientIn));
dicom_template = ‘00501_3D_TSE_0.7mm’; % this is the original dicom that is used for the new dicom header
Then with this part I get an error (Part II):
% note: the [space] before the second ‘ after the names is necessary,
% otherwise you will get an error
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘LmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description LmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom );
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘RmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description RmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom);
So what I want is 2 folders, named ‘LmSTN’ and ‘RmSTN’. This used to work and now I get the error saying ‘Cannot open file’, but I do use the correct path. I have a script where I convert MRI nifti files to DICOM. This used to work but now I get an error when trying to create a new folder and saving the converted files into that folder:
First steps work (Part I):
%% load data
% REVISIT – adapt all text between ‘apostrophes’
patientID = ‘patient180’; % this is the folder with the specific patient data
patientIn = fullfile(‘7Tseg_Brainlab’, patientID); % this is the folder where the patient folders are in
patientFolder = fullfile… % this is the whole path to the patientIn folder
(‘here is whole path’,patientIn);
addpath(genpath(patientIn));
dicom_template = ‘00501_3D_TSE_0.7mm’; % this is the original dicom that is used for the new dicom header
Then with this part I get an error (Part II):
% note: the [space] before the second ‘ after the names is necessary,
% otherwise you will get an error
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘LmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description LmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom );
cmdNiftiToDicom = [‘niftitodicom.exe -o’ patientFolder ‘RmSTN ‘ patientFolder ‘7T2LRmSTN.nii.gz ‘ patientFolder ‘0501_3D_TSE_0.7mm0001.dcm –sagittal ‘ ‘–series-description RmSTN ‘];
statusNiftiToDicom = system( cmdNiftiToDicom);
So what I want is 2 folders, named ‘LmSTN’ and ‘RmSTN’. This used to work and now I get the error saying ‘Cannot open file’, but I do use the correct path. nifti, dicom MATLAB Answers — New Questions
Mouse often freezes for several seconds when MATLAB is open, even when not running
When MATLAB is open, my laptop often freezes for several seconds. This happens frequently, about every half a minute or more often. It happens more often when I am actively using MATLAB but it also happens often when I have MATLAB open but not running or typing anything. I tried different releases (2021b and 2024a) and reset my preferences but that didn’t work. Anyone knows how to solve this?When MATLAB is open, my laptop often freezes for several seconds. This happens frequently, about every half a minute or more often. It happens more often when I am actively using MATLAB but it also happens often when I have MATLAB open but not running or typing anything. I tried different releases (2021b and 2024a) and reset my preferences but that didn’t work. Anyone knows how to solve this? When MATLAB is open, my laptop often freezes for several seconds. This happens frequently, about every half a minute or more often. It happens more often when I am actively using MATLAB but it also happens often when I have MATLAB open but not running or typing anything. I tried different releases (2021b and 2024a) and reset my preferences but that didn’t work. Anyone knows how to solve this? freeze MATLAB Answers — New Questions
How can I programmatically link a requirement to a step in test assessment
I want to link my requirements from requirements editor to specific steps in my test assessment block (I also use test scenarios). I was able to create the link between both via mouse-clicks, but I want to link it via a script.
I suppose it is done by the command
slreq.createLink(src,dest)
but I was not able to get the handle / id / url of the step in my test scenario to use as a source (or destination).
If I examine a manually created link it uses the following "adress" to the step in the assessment:
domain: ‘linktype_rmi_simulink’
artifact: ‘C:pathtomodelAutomationExampleUnit.slx’
id: ‘:urn:uuid:4c7edae6-0d2c-4603-96ec-d8f11e1c3afb:52:84’
but where can I find this id ?
thanks in advance !!I want to link my requirements from requirements editor to specific steps in my test assessment block (I also use test scenarios). I was able to create the link between both via mouse-clicks, but I want to link it via a script.
I suppose it is done by the command
slreq.createLink(src,dest)
but I was not able to get the handle / id / url of the step in my test scenario to use as a source (or destination).
If I examine a manually created link it uses the following "adress" to the step in the assessment:
domain: ‘linktype_rmi_simulink’
artifact: ‘C:pathtomodelAutomationExampleUnit.slx’
id: ‘:urn:uuid:4c7edae6-0d2c-4603-96ec-d8f11e1c3afb:52:84’
but where can I find this id ?
thanks in advance !! I want to link my requirements from requirements editor to specific steps in my test assessment block (I also use test scenarios). I was able to create the link between both via mouse-clicks, but I want to link it via a script.
I suppose it is done by the command
slreq.createLink(src,dest)
but I was not able to get the handle / id / url of the step in my test scenario to use as a source (or destination).
If I examine a manually created link it uses the following "adress" to the step in the assessment:
domain: ‘linktype_rmi_simulink’
artifact: ‘C:pathtomodelAutomationExampleUnit.slx’
id: ‘:urn:uuid:4c7edae6-0d2c-4603-96ec-d8f11e1c3afb:52:84’
but where can I find this id ?
thanks in advance !! assessment, step, scenario, requirement, link, programming MATLAB Answers — New Questions
Partnership proposal
We are currently developing an innovative VR headset aimed at revolutionizing education. Our goal is to integrate a robust operating system powered by Microsoft Windows, enhancing compatibility and functionality. We are keen to explore collaboration opportunities with Microsoft to seamlessly integrate their OS, ensuring our VR headset delivers optimal performance and user satisfaction in diverse applications.
We are currently developing an innovative VR headset aimed at revolutionizing education. Our goal is to integrate a robust operating system powered by Microsoft Windows, enhancing compatibility and functionality. We are keen to explore collaboration opportunities with Microsoft to seamlessly integrate their OS, ensuring our VR headset delivers optimal performance and user satisfaction in diverse applications. Read More
Andorid widget not available
Hello everyone,
Over the past few days, I’ve been experiencing an issue with tasks list widget on my Android 14 (one ui 6.1) device. Initially, it froze and stopped updating at the beginning of the day in ‘my day’ view for scheduled tasks. When I attempted to remove the widget and add it back to the desktop, it was no longer available in the widget list. I also enrolled in the beta user program, but that didn’t resolve the issue.
Client: To Do Android; Version: 2.120.8620.00.betabuild#: 0
Any ideas how to fix this?
Thanks,
Krzysztof
Hello everyone,Over the past few days, I’ve been experiencing an issue with tasks list widget on my Android 14 (one ui 6.1) device. Initially, it froze and stopped updating at the beginning of the day in ‘my day’ view for scheduled tasks. When I attempted to remove the widget and add it back to the desktop, it was no longer available in the widget list. I also enrolled in the beta user program, but that didn’t resolve the issue.Client: To Do Android; Version: 2.120.8620.00.betabuild#: 0 Any ideas how to fix this? Thanks,Krzysztof Read More
Compatability mode
Two of my Excel Spreadsheets have suddenly gone into compatabilty mode which makes them useless. How do I get back to standard excel format?
Please help
Two of my Excel Spreadsheets have suddenly gone into compatabilty mode which makes them useless. How do I get back to standard excel format?Please help Read More
Town Hall Query
Hi all
just a few questions on using town halls, never used it yet but planning on bringing it in.
1. Can i create a registration page for a Town Hall or is it just a case of sending out the link/invite to join. i cant see anywhere relating to registration creation for a Town Hall?
2. Does the ‘Green room’ work for the duration of the event – i am trying to imagine it, is it similar to Zooms backstage where you can go in and out of the townhall once your speaker has arrived, tested and are ready to present, or is it just set up to use prior to the Town hall starting and once live its no longer available?
3. in the intro to town halls page it states ‘
Event concurrency3: Town hall in Office and Microsoft 365 offerings1 will support up to 15 events hosted simultaneously across a tenant and up to 50 concurrent events in Teams Premium.’ what is the difference on 15 events hosted and 50 concurrent events – not sure if i am just reading it wrong!
4. can i control who sees the recording of meetings/ live events and town hall meetings whne i am hosting meetings, do i need premium to get controls of sharing recordings? i dont want people to automatically get access to recordings of events they attend.
any quick answers to my questions greatly appreciated.
Hi all just a few questions on using town halls, never used it yet but planning on bringing it in. 1. Can i create a registration page for a Town Hall or is it just a case of sending out the link/invite to join. i cant see anywhere relating to registration creation for a Town Hall? 2. Does the ‘Green room’ work for the duration of the event – i am trying to imagine it, is it similar to Zooms backstage where you can go in and out of the townhall once your speaker has arrived, tested and are ready to present, or is it just set up to use prior to the Town hall starting and once live its no longer available? 3. in the intro to town halls page it states ‘Event concurrency3: Town hall in Office and Microsoft 365 offerings1 will support up to 15 events hosted simultaneously across a tenant and up to 50 concurrent events in Teams Premium.’ what is the difference on 15 events hosted and 50 concurrent events – not sure if i am just reading it wrong!4. can i control who sees the recording of meetings/ live events and town hall meetings whne i am hosting meetings, do i need premium to get controls of sharing recordings? i dont want people to automatically get access to recordings of events they attend. any quick answers to my questions greatly appreciated. Read More
Microsoft Power BI and Microsoft Defender for Cloud – Part 2: Overcoming ARG 1000-Record Limit
In our previous blog, we explored how Power BI can complement Azure Workbook for consuming and visualizing data from Microsoft Defender for Cloud (MDC). In this second installment of our series, we dive into a common limitation faced when working with Azure Resource Graph (ARG) data – the 1000-record limit – and how Power BI can effectively address this constraint to enhance your data analysis and security insights.
The 1000-Record Limit: A Bottleneck in Data Analysis
When querying Azure Resource Graph (ARG) programmatically or using tools like Azure Workbook, users often face a limitation where the results are truncated to 1000 records. This limitation can be problematic for environments with extensive data, such as those with numerous subscriptions or complex resource configurations. Notably, this limit does not apply when accessing data through the Azure Portal’s built-in Azure Resource Graph Explorer, where users can query and view larger datasets without restriction. This difference can create a significant bottleneck for organizations relying on programmatic access to ARG data for comprehensive analysis.
Power BI and ARG Data Connector: Breaking Through the Limit
One of the key advantages of using Power BI’s ARG data connector is its ability to bypass the 1000-record limit imposed by Azure Workbook and other similar tools. By leveraging Power BI’s capabilities, users can access and visualize a comprehensive dataset without the constraints that typically come with ARG queries.
The Power BI ARG data connector provides a robust solution by enabling the extraction of larger datasets, which allows for more detailed and insightful analysis. This feature is particularly useful for organizations with extensive resource configurations and security plans, as it facilitates a deeper understanding of their security posture.
Case Study: Porting the MDC Security Plans Coverage Workbook to Power BI
To illustrate the benefits of using Power BI to overcome the 1000-record limit, let’s walk through a practical example. We’ll use a Power BI report that ports the existing MDC workbook on Security Plans Coverage. This report showcases how Power BI can provide a more granular view of security plans across an organization.
Setting Up the Power BI Report
To make it easier for you to get started with enhancing your MDC insights, we have developed an actual Power BI report, which you can access via our GitHub repository at https://aka.ms/AArnksi. Here’s how you can set it up and start using it:
Download the Report: Navigate to the GitHub repository and download the Power BI report template file. This report has been pre-configured to connect to Azure Resource Graph and includes various visualizations to help you analyze your security plans coverage.
Connect to Azure Resource Graph:
Open the downloaded Power BI report template file in Power BI Desktop.
When prompted, authenticate with your Azure credentials to establish a connection to your Azure Resource Graph.
Ensure that the necessary permissions are in place for accessing the required ARG data.
Import Data:
The Power BI report is set up to query ARG data and import the full dataset, bypassing the 1000-record limit. You can modify the queries if needed to suit your specific requirements.
Review the imported data to ensure completeness and accuracy.
Create and Customize Visualizations:
The report includes various pre-built visualizations such as tables, charts, and maps to comprehensively represent the Security Plans Coverage.
You can customize these visualizations or add new ones to tailor the report to your organization’s specific needs. This allows you to highlight key metrics and insights relevant to your security posture.
Next sample images of the report:
By using this pre-configured Power BI report, you can quickly overcome the 1000-record limit and gain deeper insights into your security plans across multiple subscriptions and resources. The detailed visualizations provide a clear and actionable view of your security coverage, enabling you to make informed decisions and enhance your organization’s security posture.
Enhancing Security Insights
Detailed Coverage Analysis: Use Power BI to display a detailed view of security plans across multiple subscriptions and resources. This allows for a more thorough analysis compared to the truncated data typically seen in Azure Workbook. For instance, you can drill down into specific subscription or multi cloud connector to identify gaps in security coverage.
Custom Reporting: Tailor your report to include custom metrics and KPIs that are specific to your organization’s security requirements, providing actionable insights that drive informed decision-making. This customization ensures that the report aligns with your unique security policies and compliance standards.
Sharing and Collaboration
Publish and Share: Once your report is complete, publish it to the Power BI service for sharing with stakeholders. This ensures that key decision-makers have access to the comprehensive data needed for strategic planning. By making the report accessible to a broader audience, you can facilitate informed discussions and decision-making processes.
Collaborate: Utilize Power BI’s collaboration features to gather feedback and make data-driven adjustments to your security plans. This collaborative approach helps in continuously improving the security posture based on real-time insights and stakeholder input.
Conclusion
By leveraging Power BI’s ARG data connector, organizations can overcome the limitations of the 1000-record constraint and gain deeper insights into their security posture. This approach not only enhances the visibility of security plans coverage but also empowers teams with the data they need to ensure robust security management.
Stay tuned for the next installment in our blog series, where we’ll continue to explore advanced techniques and best practices for integrating Power BI with Microsoft Defender for Cloud.
Microsoft Defender for Cloud Additional Resources
Download the new Microsoft CNAPP eBook at aka.ms/MSCNAPP
Become a Defender for Cloud Ninja by taking the assessment at aka.ms/MDCNinja
Reviewers
Yuri Diogenes, Principal PM Manager, CxE Defender for Cloud
Tal Rosler, Senior PM lead, Microsoft Defender for Cloud
Microsoft Tech Community – Latest Blogs –Read More
Problems by calculating zero points of a cubic function
Hey there,
I have the following problem: let´s say I want to calculate the zero points of the cubic function:
f(x) = -2 x^3 + x^2 + 0.5 x – 8
I already know the respective solution:
p = roots([-2 1 0.5 -8])
The answer p is a vector with all three possible solutions.
Now my problem:
I would like to vary the third coefficient – that is 0.5 – by several values 0.1, 0.2, … , 0.5
That would be like
x=0.1:0.1:0.5;
p = roots([-2 1 x -8])
The problem is that the respective solutions are wrong.
What is my mistake?
How should I do it instead?
Thx a lot in advance!
Best regards,
TimHey there,
I have the following problem: let´s say I want to calculate the zero points of the cubic function:
f(x) = -2 x^3 + x^2 + 0.5 x – 8
I already know the respective solution:
p = roots([-2 1 0.5 -8])
The answer p is a vector with all three possible solutions.
Now my problem:
I would like to vary the third coefficient – that is 0.5 – by several values 0.1, 0.2, … , 0.5
That would be like
x=0.1:0.1:0.5;
p = roots([-2 1 x -8])
The problem is that the respective solutions are wrong.
What is my mistake?
How should I do it instead?
Thx a lot in advance!
Best regards,
Tim Hey there,
I have the following problem: let´s say I want to calculate the zero points of the cubic function:
f(x) = -2 x^3 + x^2 + 0.5 x – 8
I already know the respective solution:
p = roots([-2 1 0.5 -8])
The answer p is a vector with all three possible solutions.
Now my problem:
I would like to vary the third coefficient – that is 0.5 – by several values 0.1, 0.2, … , 0.5
That would be like
x=0.1:0.1:0.5;
p = roots([-2 1 x -8])
The problem is that the respective solutions are wrong.
What is my mistake?
How should I do it instead?
Thx a lot in advance!
Best regards,
Tim roots polynom or cubic funtion MATLAB Answers — New Questions
Problem using diary with standalone application
I am developing a MATLAB app using the appdesigner (MATLAB version R2019b), which is intented to be used as standalone ‘.exe’ on Windows. For traceablity I wanted to include a log-file of all outputs. The ‘diary()’ function seemed to be a good function for this. In my code I have a lot of ‘disp(…)’ commands (also in code parts that I cannot or do not want to change). The output for these disp-commands works perfectly in the MATLAB command window when I run the application within the MATLAB environment. However, when run it as Windows standalone the behavior is not logical to me: In the WIndows cmd window the output is the same as in the MATLAB command window, but the diary file only logs the output for the ‘startupFcn()’ and the ‘UIFigureCloseRequest()’ functions and not for any callback, e.g. here from a button ‘DispHelloWorldButtonPushed()’.
Does anybody know how to solve this issue and where it comes from? Btw, also the build-in ‘Create log file’ option during compilation shows the same behavior as the ‘diary’ function.
Here is a minimal working example of an app with this behavior:
classdef Test < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
DispHelloWorldButton matlab.ui.control.Button
end
% Callbacks that handle component events
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
diary(fullfile(pwd,’log.txt’))
diary on
disp(‘Hello World!’)
end
% Button pushed function: DispHelloWorldButton
function DispHelloWorldButtonPushed(app, event)
diary on
disp(‘Button: Hello World!’)
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
disp(‘Bye bye World!’)
diary off
delete(app)
end
end
% Component initialization
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure and hide until all components are created
app.UIFigure = uifigure(‘Visible’, ‘off’);
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = ‘UI Figure’;
app.UIFigure.CloseRequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
% Create DispHelloWorldButton
app.DispHelloWorldButton = uibutton(app.UIFigure, ‘push’);
app.DispHelloWorldButton.ButtonPushedFcn = createCallbackFcn(app, @DispHelloWorldButtonPushed, true);
app.DispHelloWorldButton.Position = [159 161 311 175];
app.DispHelloWorldButton.Text = ‘Disp(”Hello World!”)’;
% Show the figure after all components are created
app.UIFigure.Visible = ‘on’;
end
end
% App creation and deletion
methods (Access = public)
% Construct app
function app = Test
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
% Execute the startup function
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
endI am developing a MATLAB app using the appdesigner (MATLAB version R2019b), which is intented to be used as standalone ‘.exe’ on Windows. For traceablity I wanted to include a log-file of all outputs. The ‘diary()’ function seemed to be a good function for this. In my code I have a lot of ‘disp(…)’ commands (also in code parts that I cannot or do not want to change). The output for these disp-commands works perfectly in the MATLAB command window when I run the application within the MATLAB environment. However, when run it as Windows standalone the behavior is not logical to me: In the WIndows cmd window the output is the same as in the MATLAB command window, but the diary file only logs the output for the ‘startupFcn()’ and the ‘UIFigureCloseRequest()’ functions and not for any callback, e.g. here from a button ‘DispHelloWorldButtonPushed()’.
Does anybody know how to solve this issue and where it comes from? Btw, also the build-in ‘Create log file’ option during compilation shows the same behavior as the ‘diary’ function.
Here is a minimal working example of an app with this behavior:
classdef Test < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
DispHelloWorldButton matlab.ui.control.Button
end
% Callbacks that handle component events
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
diary(fullfile(pwd,’log.txt’))
diary on
disp(‘Hello World!’)
end
% Button pushed function: DispHelloWorldButton
function DispHelloWorldButtonPushed(app, event)
diary on
disp(‘Button: Hello World!’)
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
disp(‘Bye bye World!’)
diary off
delete(app)
end
end
% Component initialization
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure and hide until all components are created
app.UIFigure = uifigure(‘Visible’, ‘off’);
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = ‘UI Figure’;
app.UIFigure.CloseRequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
% Create DispHelloWorldButton
app.DispHelloWorldButton = uibutton(app.UIFigure, ‘push’);
app.DispHelloWorldButton.ButtonPushedFcn = createCallbackFcn(app, @DispHelloWorldButtonPushed, true);
app.DispHelloWorldButton.Position = [159 161 311 175];
app.DispHelloWorldButton.Text = ‘Disp(”Hello World!”)’;
% Show the figure after all components are created
app.UIFigure.Visible = ‘on’;
end
end
% App creation and deletion
methods (Access = public)
% Construct app
function app = Test
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
% Execute the startup function
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end I am developing a MATLAB app using the appdesigner (MATLAB version R2019b), which is intented to be used as standalone ‘.exe’ on Windows. For traceablity I wanted to include a log-file of all outputs. The ‘diary()’ function seemed to be a good function for this. In my code I have a lot of ‘disp(…)’ commands (also in code parts that I cannot or do not want to change). The output for these disp-commands works perfectly in the MATLAB command window when I run the application within the MATLAB environment. However, when run it as Windows standalone the behavior is not logical to me: In the WIndows cmd window the output is the same as in the MATLAB command window, but the diary file only logs the output for the ‘startupFcn()’ and the ‘UIFigureCloseRequest()’ functions and not for any callback, e.g. here from a button ‘DispHelloWorldButtonPushed()’.
Does anybody know how to solve this issue and where it comes from? Btw, also the build-in ‘Create log file’ option during compilation shows the same behavior as the ‘diary’ function.
Here is a minimal working example of an app with this behavior:
classdef Test < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
DispHelloWorldButton matlab.ui.control.Button
end
% Callbacks that handle component events
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
diary(fullfile(pwd,’log.txt’))
diary on
disp(‘Hello World!’)
end
% Button pushed function: DispHelloWorldButton
function DispHelloWorldButtonPushed(app, event)
diary on
disp(‘Button: Hello World!’)
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
disp(‘Bye bye World!’)
diary off
delete(app)
end
end
% Component initialization
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure and hide until all components are created
app.UIFigure = uifigure(‘Visible’, ‘off’);
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = ‘UI Figure’;
app.UIFigure.CloseRequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
% Create DispHelloWorldButton
app.DispHelloWorldButton = uibutton(app.UIFigure, ‘push’);
app.DispHelloWorldButton.ButtonPushedFcn = createCallbackFcn(app, @DispHelloWorldButtonPushed, true);
app.DispHelloWorldButton.Position = [159 161 311 175];
app.DispHelloWorldButton.Text = ‘Disp(”Hello World!”)’;
% Show the figure after all components are created
app.UIFigure.Visible = ‘on’;
end
end
% App creation and deletion
methods (Access = public)
% Construct app
function app = Test
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
% Execute the startup function
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end standalone, disp, diary, callback, appdesigner MATLAB Answers — New Questions
How can I export .mat file to .xls file?
How can I export .mat file to .xls file? I am using xlswrite(‘filename.xls’) but not working. I have 50×50 deta. Kindly help me.How can I export .mat file to .xls file? I am using xlswrite(‘filename.xls’) but not working. I have 50×50 deta. Kindly help me. How can I export .mat file to .xls file? I am using xlswrite(‘filename.xls’) but not working. I have 50×50 deta. Kindly help me. how can i export .mat file to .xls file? MATLAB Answers — New Questions
Errors in feedback control after setting the input of a prismatic joint to motion/provided by input
Hello, I am currently controlling the prismatic joint actuators of a Stewart platform using Simulink. I have set the input to motion/provided by input in order to change the position of the eight actuators over time. However, when I try to perform feedback control in the simulation, I encounter errors as shown in the image below. Feedback control works when the input is set to force, but why do these errors occur when the input is set to motion? If anyone knows the answer, I would be very grateful for your help.Hello, I am currently controlling the prismatic joint actuators of a Stewart platform using Simulink. I have set the input to motion/provided by input in order to change the position of the eight actuators over time. However, when I try to perform feedback control in the simulation, I encounter errors as shown in the image below. Feedback control works when the input is set to force, but why do these errors occur when the input is set to motion? If anyone knows the answer, I would be very grateful for your help. Hello, I am currently controlling the prismatic joint actuators of a Stewart platform using Simulink. I have set the input to motion/provided by input in order to change the position of the eight actuators over time. However, when I try to perform feedback control in the simulation, I encounter errors as shown in the image below. Feedback control works when the input is set to force, but why do these errors occur when the input is set to motion? If anyone knows the answer, I would be very grateful for your help. simulink, simscape MATLAB Answers — New Questions